عندما تكتب مجموعة اختبار وحدة ، قد تكون هناك بعض الأنشطة غير المتعلقة بالاختبار التي تحتاج إلى القيام بها. يمكن أن تتخذ هذه الأنشطة أي شكل. قد تحتاج إلى الاتصال بقاعدة بيانات أو جمع الموارد قبل إجراء الاختبار. بعد تنفيذ كل حالة اختبار ، قد تحتاج إلى تحرير بعض الموارد.

قد يكون إجراء أي من هذه الأنشطة غير المتعلقة بالاختبار خارج نطاق فئة اختبار الوحدة مملاً إن لم يكن مستحيلاً. قد يعتمد التنفيذ الناجح لفئة الاختبار الخاصة بك على هذه الأنشطة ، لذلك توفر JUnit زوجين من التعليقات التوضيحية لمعالجة هذه المشكلة.

التعليق التوضيحي قبل الكل

يمكن أن يكون لفصل اختبار JUnit طريقة اختبار واحدة أو أكثر. يشير التعليق التوضيحيBeforeAll إلى أنه يجب تنفيذ طريقة معينة قبل جميع طرق الاختبار في فئة الاختبار. يتم تنفيذ الطريقة المرتبطة بهذا التعليق التوضيحي مرة واحدة فقط (في بداية الاختبار) بغض النظر عن عدد طرق الاختبار في فئة الاختبار.

يجب أن تتبع أي طريقة تستخدم التعليق التوضيحيBeforeAll بعض الشروط. يجب أن تحتوي هذه الطرق على نوع إرجاع باطل ، ويجب أن تكون عامة ، ويجب ألا تكون خاصة. يعد التعليق التوضيحيBeforeAll مثاليًا لإنشاء ملف

instagram viewer
الاتصال بقاعدة البيانات أو إنشاء ملف جديد. تستخدم هذه المقالة فئة اختبار الآلة الحاسبة لتوضيح كيف يمكنك استخدام التعليق التوضيحيBeforeAll.

فئة الآلة الحاسبة

حزمة com.app ؛
عامصف دراسيآلة حاسبة{
عامثابتةintيضيف(int العدد 1 ، int العدد 2){
إرجاع عدد 1 + عدد 2 ؛
}
عامثابتةintطرح او خصم(int العدد 1 ، int العدد 2){
إرجاع العدد 1 - العدد 2 ؛
}
عامثابتةintتتضاعف(int العدد 1 ، int العدد 2){
إرجاع num1 * num2 ؛
}
عامثابتةintيقسم(int العدد 1 ، int العدد 2){
إرجاع num1 / num2 ؛
}
}

فئة الاختبار الحاسبة

يستوردثابتةغزاله.junit.كوكب المشتري.apiالتأكيدات.*;
يستوردغزاله.junit.كوكب المشتري.api.قبل كل;
يستوردغزاله.junit.كوكب المشتري.api.اختبار;
يستوردغزاله.junit.كوكب المشتري.api.اسم العرض;

DisplayName ("اختبار الفصل يوضح كيفية استعمال ال قبلوبعد، بعدما التعليقات التوضيحية. ")
صف دراسيآلة حاسبة{
@قبل كل
عامثابتةفارغpowerOnCalculator(){
System.out.println ("الآلة الحاسبة قيد التشغيل");
}

@اختبار
@اسم العرض("طريقة الاختبار التي تضيف قيمتين صحيحتين.")
عامفارغاختبار(){
أكد(7, آلة حاسبة.يضيف(3, 4));
}

@اختبار
@اسم العرض("طريقة الاختبار التي تطرح قيمة عددية واحدة من أخرى.")
عامفارغاختبار(){
أكد(6, آلة حاسبة.طرح او خصم(9, 3));
}

@اختبار
@اسم العرض("طريقة الاختبار التي تضرب قيمتين صحيحتين")
عامفارغاختبار(){
أكد(10, آلة حاسبة.تتضاعف(5, 2));
}

@اختبار
@اسم العرض("طريقة الاختبار التي تقسم قيمة عدد صحيح على أخرى")
عامفارغاختبار(){
أكد(2, آلة حاسبة.يقسم(4, 2));
}
}

في هذه الفئة ، يعمل التعليق التوضيحيBeforeAll مع طريقة powerOnCalculator () التي تطبع "الآلة الحاسبة قيد التشغيل" قبل أي تشغيل اختباري. يطبع تنفيذ الاختبار الناجح تقرير الاختبار التالي:

كما ترى ، لا تظهر الطريقة المرتبطة بالتعليق التوضيحيBeforeAll في تقرير الاختبار. ومع ذلك ، إذا كان هناك خطأ في طريقة التعليق التوضيحيBeforeAll ، فستشير نتائج تقرير الاختبار إلى ذلك مع وجود فشل.

الشرحBeforeEach

مثل طريقةBeforeAll المشروحة ، لن تظهر الطريقةBeforeEach في تقرير الاختبار. يتم تنفيذ طريقةBeforeEach المشروحة قبل كل طريقة اختبار في فئة اختبار. لذلك ، إذا كانت فئة الاختبار تحتوي على طريقتين للاختبار ، فسيتم تنفيذ التعليق التوضيحيBeforeEach مرتين.

يستوردثابتةغزاله.junit.كوكب المشتري.apiالتأكيدات.*;
يستوردغزاله.junit.كوكب المشتري.api.قبل كل;
يستوردغزاله.junit.كوكب المشتري.apiقبل كل شيء;
يستوردغزاله.junit.كوكب المشتري.api.اختبار;
DisplayName ("اختبار الفصل يوضح كيفية استعمال ال قبلوبعد، بعدما التعليقات التوضيحية. ")
صف دراسيآلة حاسبة{
@قبل كل
عامثابتةفارغpowerOnCalculator(){
System.out.println ("الآلة الحاسبة قيد التشغيل");
}
تضمين التغريدة
عامفارغclearCalculator(){
System.out.println ("الآلة الحاسبة جاهزة");
}
@اختبار
@اسم العرض("طريقة الاختبار التي تضيف قيمتين صحيحتين.")
عامفارغاختبار(){
أكد(7, آلة حاسبة.يضيف(3, 4));
}
@اختبار
@اسم العرض("طريقة الاختبار التي تطرح قيمة عددية واحدة من أخرى.")
عامفارغاختبار(){
أكد(6, آلة حاسبة.طرح او خصم(9, 3));
}
@اختبار
@اسم العرض("طريقة الاختبار التي تضرب قيمتين صحيحتين")
عامفارغاختبار(){
أكد(10, آلة حاسبة.تتضاعف(5, 2));
}
@اختبار
@اسم العرض("طريقة الاختبار التي تقسم قيمة عدد صحيح على أخرى")
عامفارغاختبار(){
أكد(2, آلة حاسبة.يقسم(4, 2));
}
}

تؤدي إضافة التعليق التوضيحيBeforeEach إلى فئة CalculatorTest إلى الإخراج التالي:

يتم تنفيذ الطريقة المرتبطة بالتعليق التوضيحيBeforeEach أربع مرات ، مرة واحدة قبل كل طريقة اختبار. يجب ملاحظة أن طريقةBeforeEach ليست ثابتة ، ولها نوع إرجاع باطل ، وليست خاصة ، فهذه شروط إلزامية. من المهم أيضًا ملاحظة أن الطريقة المقترنة بالتعليق التوضيحيBeforeEach تعمل بعد طريقةBeforeAll.

التعليق التوضيحيAfterAll

سيتم تنفيذ طريقة مع التعليق التوضيحيAfterAll بعد أن تكمل جميع طرق الاختبار في فئة الاختبار تنفيذها. يعد التعليق التوضيحيAfterAll مثاليًا لـ عمليات الملفات الأساسية، مثل إغلاق ملف أو قطع الاتصال بقاعدة البيانات. التعليق التوضيحيAfterAll هو المقابل للتعليق التوضيحيBeforeAll. مثل التعليق التوضيحيBeforeAll ، يجب أن يكون التعليق التوضيحيAfterAll ثابتًا ويجب أن يكون باطلاً وألا يكون الكثير منه خاصًا.

@بعد كل شيء
عامثابتةفارغpowerOffCalculator(){
System.out.println ("الآلة الحاسبة متوقفة");
}

تؤدي إضافة طريقةAfterAll إلى فئة CalculatorTest الحالية إلى طباعة الإخراج التالي إلى وحدة التحكم:

لاحظ أن طريقة powerOffCalculator () ، التي تستخدم التعليق التوضيحيAfterAll ، تطبع في نهاية فئة الاختبار ، بعد تنفيذ جميع طرق الاختبار.

التعليق التوضيحيAfterEach

التعليق التوضيحيAfterEach هو المقابل للتعليق التوضيحيBeforeEach. لديهم نفس الشروط الإلزامية ، والتي تختلف قليلاً عن تلك الموجودة في التعليقات التوضيحيةBeforeAll وAfterAll. ما يميز التعليق التوضيحيAfterEach عن التعليق التوضيحيBeforeEach (بخلاف أسمائهم) هو أن طريقةAfterEach تعمل بعد كل طريقة اختبار.

@بعد كل
عامفارغعودة النتائج(){
System.out.println ("النتائج جاهزة");
}

يؤدي تنفيذ فئة CalculatorTest إلى طباعة الإخراج التالي إلى وحدة التحكم:

يُظهر الإخراج أن الطريقة المرتبطة بالتعليق التوضيحيAfterEach (returnResults) تطبع أربع مرات. لا يحدث كل تنفيذ للأسلوب returnResults () إلا بعد تنفيذ اختبار كل وحدة. يتضح هذا من خلال حقيقة أن ناتج أسلوب returnResults () يظهر بعد كل إخراج من الطريقة المرتبطة بالتعليق التوضيحيBeforeEach.

تلميع مجموعات الاختبار الخاصة بك باستخدام التعليقات التوضيحية

تسمح لك JUnit بمعالجة العمليات غير المتعلقة بالاختبار باستخدام التعليقات التوضيحية قبل وبعد. تنتمي هذه التعليقات التوضيحية الأربعة إلى قائمة بالعديد من التعليقات التوضيحية الأخرى التي تضيف قيمة إلى اختباراتك. من التعليقات التوضيحية الأخرى لـ JUnit هيDisplayName.

يستخدم مثالا الكود اللذان يعرضان فئة CalculatorTest الكاملة التعليق التوضيحيDisplayName. يساعدك التعليق التوضيحيDisplayName على إنشاء أسماء ذات مغزى لفئات الاختبار وطرق الاختبار.