JUnit حالات الاختبار @Before @BeforeClass الشرح
⚡ ملخص ذكي
JUnit يُعد إطار اختبار الوحدات الأكثر استخدامًا على نطاق واسع لـ Javaوتتحكم تعليقات تجهيزات الاختبار الخاصة بها بدقة فيما يحدث قبل وبعد تشغيل كل طريقة اختبار داخل فئة الاختبار.
JUnit هي الوحدة الأكثر شعبية الاختبار إطار في Java. يوصى به صراحةً وحدة التجارب. JUnit لا يتطلب الأمر خادمًا لاختبار تطبيق الويب، مما يجعل عملية الاختبار سريعة.
استخدم JUnit يتيح إطار العمل أيضًا إنشاء حالات الاختبار وبيانات الاختبار بسرعة وسهولة. ال org.junit تتكون الحزمة من العديد من الواجهات والفئات لـ JUnit الاختبار، مثل الاختبار، والتأكيد، وما بعد الاختبار، وما قبل الاختبار. وهو أوسع نطاقًا. JUnit تبني الأسرة على هذه اللبنات الأساسية نفسها.
ما هو اختبار التثبيت؟
قبل أن نفهم ما هو جهاز الاختبار، دعونا ندرس الكود أدناه.
تم تصميم هذا الكود لتنفيذ حالتي اختبار على ملف بسيط.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
بعض القضايا هنا
- الكود غير قابل للقراءة.
- ليس من السهل الحفاظ على الكود.
- عندما يكون مجموعة الاختبار معقدة، يمكن أن يحتوي الكود على مشكلات منطقية.
قارن نفس الكود باستخدام JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
الكود أكثر قابلية للقراءة والصيانة. بنية الكود المذكورة أعلاه هي جهاز اختبار.
تركيبات الاختبار هي سياق حيث أ JUnit حالة الاختبار أشواط. عادة، تشمل تركيبات الاختبار ما يلي:
- الكائنات أو الموارد المتوفرة لأي حالة اختبار.
- الأنشطة المطلوبة التي تجعل هذه الأشياء والموارد متاحة.
- هذه الأنشطة هي
- التخصيص (الإعداد)
- إلغاء التخصيص (تمزيق).
الإعداد والتفكيك
المباريات مهمة لأن JUnit يتم تطبيق هذه الخطافات على كل اختبار.
- عادة، هناك بعض المهام المتكررة التي يجب القيام بها قبل كل حالة اختبار. على سبيل المثال: إنشاء اتصال بقاعدة البيانات.
- وبالمثل، في نهاية كل حالة اختبار، قد تكون هناك بعض المهام المتكررة. على سبيل المثال: للتنظيف بمجرد انتهاء تنفيذ الاختبار.
- JUnit يوفر هذا النظام تعليقات توضيحية تساعد في الإعداد والإنهاء. كما يضمن تحرير الموارد، وأن يكون نظام الاختبار جاهزًا لحالة الاختبار التالية.
تشبه JUnit سيتم مناقشة التعليقات التوضيحية أدناه.
اقامة
@قبل تعليق توضيحي في JUnit يستخدم على طريقة تحتوي على Java يتم تشغيل الكود قبل كل حالة اختبار، أي أنه يتم تشغيله قبل كل تنفيذ للاختبار.
التدمير (بغض النظر عن الحكم)
@بعد يتم استخدام التعليقات التوضيحية على طريقة تحتوي على Java يتم تنفيذ التعليمات البرمجية بعد كل حالة اختبار. ستعمل هذه الطرق حتى في حالة حدوث أي استثناءات في حالة الاختبار أو في حالة فشل التأكيد.
ملاحظة:
- يُسمح بالحصول على أي عدد من التعليقات التوضيحية المذكورة أعلاه.
- جميع الأساليب المشروحة مع @قبل in JUnit سيتم تشغيلها قبل كل حالة اختبار، ولكن قد يتم تشغيلها بأي ترتيب.
- يمكنك توريث الدالتين @Before و @After من فئة أساسية. ويكون التنفيذ كما يلي، وهو عملية تنفيذ قياسية في JUnit.
- تنفيذ JUnit @قبل الأساليب في الطبقة الفائقة
- قم بتنفيذ الأساليب @Before في هذه الفئة
- قم بتنفيذ طريقة @Test في هذه الفئة
- قم بتنفيذ أساليب @After في هذه الفئة
- قم بتنفيذ أساليب @After في الفئة الفائقة
JUnit ملاحظة 5: هذه التعليقات التوضيحية هي JUnit 4 (org.junit). JUnit 5 أعادوا تسميتهم في org.junit.jupiter.api، و JUnit الكود رقم 4 أدناه لا يزال يعمل تحت محرك النظام القديم.
| JUnit 4- التعليق | JUnit ما يعادل 5 (كوكب المشتري) | أشواط |
|---|---|---|
| @قبل | @BeforeEach | قبل كل طريقة اختبار |
| @بعد | @AfterEach | بعد كل طريقة اختبار |
| @قبل الفصل | @BeforeAll | مرة واحدة أمام الفصل بأكمله |
| @بعد الفصل | @AfterAll | مرة واحدة بعد انتهاء الفصل بأكمله |
| @يتجاهل | @عاجز | يتخطى الاختبار المشروح |
مثال: إنشاء فئة باستخدام ملف كأداة اختبار
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
في المثال أعلاه، ستكون سلسلة التنفيذ كما يلي. الرسم التخطيطي tracدورة واحدة لإنشاء واختبار وحذف لكل طريقة اختبار.
- إنشاء ملف الإخراج ()
- ملف الاختبار1()
- حذف ملف الإخراج ()
- إنشاء ملف الإخراج ()
- ملف الاختبار2()
- حذف ملف الإخراج ()
افتراض:
يتم تشغيل testFile1() قبل testFile2()، وهو أمر غير مضمون.
الإعداد لمرة واحدة فقط
- من الممكن تشغيل إحدى الطرق مرة واحدة فقط لفئة الاختبار بأكملها قبل تنفيذ أي من الاختبارات، وقبل أي منها @قبل طُرق).
- يُعدّ "الإعداد لمرة واحدة" مفيدًا لتشغيل الخوادم، وفتح الاتصالات، وما شابه ذلك من مهام. أما إغلاق الموارد وإعادة فتحها لكل اختبار فهو أمرٌ يستغرق وقتًا طويلاً.
- يمكن القيام بذلك باستخدام التعليق التوضيحي @قبل الفصل in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
يجب أن تكون الطريقة الفراغ الساكن العام، لان JUnit يتم استدعاؤه قبل وجود أي نسخة اختبار.
مرة واحدة فقط هدم
- على غرار الإعداد لمرة واحدة، تتوفر أيضًا طريقة تنظيف لمرة واحدة. يتم تشغيلها بعد جميع طرق حالات الاختبار و @بعد تم تنفيذ التعليقات التوضيحية.
- وهو مفيد للتوقفping الخوادم وإغلاق روابط الاتصال.
- يمكن القيام بذلك باستخدام ملف @بعد الفصل حاشية. ملاحظة.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit أجنحة الاختبار
بعد وضع التجهيزات اللازمة، يتم عادةً تجميع فئات الاختبار ذات الصلة وإطلاقها معًا.
إذا أردنا تنفيذ عدة اختبارات بترتيب محدد، فيمكننا فعل ذلك بدمج جميع الاختبارات في مكان واحد. يُسمى هذا المكان مجموعة الاختبارات. لمزيد من التفاصيل حول كيفية تنفيذ مجموعات الاختبارات وكيفية استخدامها، يُرجى مراجعة [رابط غير متوفر]. JUnit يشمل هذا البرنامج التعليمي.
JUnit عداء اختبار
JUnit يوفر أداة لتنفيذ حالات الاختبار الخاصة بك.
- JUnitجوهر يتم استخدام class لتنفيذ هذه الاختبارات.
- طريقة تسمى runClasses التي تقدمها org.junit.runner.JUnitجوهر يستخدم لتشغيل واحد أو عدة فئات الاختبار.
- نوع الإرجاع لهذه الطريقة هو نتيجة موضوع (org.junit.runner.النتيجةيُستخدم هذا للوصول إلى معلومات حول الاختبارات. انظر إلى مثال الكود التالي لمزيد من التوضيح.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
في الكود أعلاه، تتم معالجة كائن "result" للحصول على نتائج حالات الاختبار التي نقوم بتنفيذها، سواء كانت ناجحة أم فاشلة. وتشمل الأدوات المساعدة ما يلي: أكد سلط الضوء على تلك الإخفاقات، بينما @يتجاهل يتخطى الاختبار.
JUnit ملاحظة 5: JUnitجوهر هي JUnit عداء رقم 4. JUnit يستبدل الرقم 5 ذلك بـ JUnit المنظومة راجمة واجهة برمجة التطبيقات (API)، التي يتم تشغيلها عادةً بواسطة بيئة التطوير المتكاملة (IDE)، Gradle أو مافن شورفاير.
الاسم الأول JUnit البرنامج
معرفة جيدة بدورة حياة تطوير البرمجيات (SDLC). Java البرمجة، وأساسيات اختبار البرمجيات تساعد هذه العملية في فهم JUnit البرنامج، وكذلك معرفة كيفية اختبارات الوحدة تختلف عن اختبارات التكامل.
دعونا نفهم اختبار الوحدات باستخدام مثال عملي. نحتاج إلى إنشاء فئة اختبار تحتوي على دالة اختبار مُعَلَّمة بـ @اختبار على النحو الوارد أدناه:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
لتنفيذ طريقة الاختبار (المذكورة أعلاه)، نحتاج إلى إنشاء مُشغِّل اختبار. في مُشغِّل الاختبار، يجب إضافة فئة الاختبار كمعامل في JUnitدالة runClasses() في Core. ستعيد هذه الدالة نتيجة الاختبار، بناءً على ما إذا كان الاختبار ناجحًا أم فاشلاً.
لمزيد من التفاصيل حول هذا الموضوع، انظر الكود أدناه:
package guru99.JUnit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
الناتج
Once Spa TestRunner.java عند تنفيذ طرق الاختبار، نحصل على نتيجة إما ناجحة أو فاشلة. تجدون أدناه شرحًا للنتيجة:
- في هذا المثال، بعد التنفيذ MyFirstClassTest.java، تم اجتياز الاختبار وكانت النتيجة باللون الأخضر.
- لو فشل البرنامج، لظهرت النتيجة باللون الأحمر، ويمكن ملاحظة الفشل في... tracهـ. انظر إلى JUnit واجهة المستخدم الرسومية أدناه:


