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

تتيح لك JUnit 5 إنشاء اختبارات متداخلة باستخدام التعليق التوضيحيNested. في هذه المقالة ، ستتعرف على ماهية التعليق التوضيحيNested وكيفية استخدامه.

ما هو الاختبار المتداخل؟

يشير التعليق التوضيحي لـ JUnitNested إلى أن الفصل الذي يرتبط به هو فئة داخلية ، وهي عضو في فصل دراسي آخر. الاختبار المتداخل هو فئة اختبار تحتوي على التعليق التوضيحيNested ، وهذا يعني أن هناك فئة داخلية واحدة (أو أكثر) ضمن فئة اختبار المستوى الأعلى. يمكن أن تظهر فئة متداخلة داخل فئة المستوى الأعلى ، أو داخل فئة متداخلة أيضًا.

إنشاء فئات Java للاختبار

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

instagram viewer

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

عامفصلعميل{
محميint هوية الزبون؛
محمي سلسلة اسم العميل ؛
محمي سلسلة رمز العميل ؛

// المُنشئ الافتراضي
عامعميل(){
هذا.customerId = 0;
هذا.customerName = ""؛
هذا.customerCode = ""؛
}

// المنشئ الأساسي
عامعميل(int معرف العميل ، سلسلة اسم العميل ، سلسلة رمز العميل){
هذا.customerId = customerId ؛
هذا.customerName = customerName ؛
هذا.customerCode = customerCode ؛
}

// نسخ المنشئ
عامعميل(زبون الزبون){
هذا.customerId = customer.customerId ؛
هذا.customerName = customer.customerName ؛
هذا.customerCode = customer.customerCode ؛
}

// حاصل على وضعية
عامintgetCustomerId(){
يعود هوية الزبون؛
}

عامفارغsetCustomerId(int هوية الزبون){
هذا.customerId = customerId ؛
}

عام خيط getCustomerName(){
يعود اسم الزبون؛
}

عامفارغsetCustomerName(String customerName){
هذا.customerName = customerName ؛
}

عام خيط getCustomerCode(){
يعود كود العميل
}

عامفارغsetCustomerCode(سلسلة رمز العميل){
هذا.customerCode = customerCode ؛
}

// تحديد نسبة خصم العميل بناءً على نوع العميل
عاممزدوجنوع العميل(سلسلة رمز العميل){
مزدوج الخصم = 0;

لو (customerCode.toLowerCase (). يساوي ("pre")) {
الخصم = 0.10;
} آخرلو (customerCode.toLowerCase (). يساوي ("gen")) {
الخصم = 0.02;
} آخرلو (customerCode.toLowerCase (). يساوي ("جديد")) {
الخصم = 0.05;
}

يعود تخفيض؛
}

// تحديد grandTotal للعميل بناءً على نوع العميل
عاممزدوجالمجموع الإجمالي(مزدوج المجموع){
مزدوج الخصم = نوع العميل (كود العميل) ؛
مزدوج discountPercentage = إجمالي * الخصم ؛
مزدوج finalTotal = إجمالي - نسبة الخصم ؛
يعود المجموع النهائي؛
}
}

تحتوي فئة العميل هذه على جميع مكونات فئة Java ، كاملة بطريقتين.

إنشاء اختبار متداخل باستخدام JUnit 5

تحتوي فئة العملاء على العديد من المُنشئين والمكتسبين والعاملين وطريقتين. يمكنك إنشاء فئة متداخلة (داخل فئة اختبار العميل) تقوم بإنشاء كائن عميل جديد واختبار جميع مكوناته.

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

يستوردغزاله.junit.كوكب المشتري.api.اسم العرض;
يستوردغزاله.junit.كوكب المشتري.api. متداخلة;
يستوردغزاله.junit.كوكب المشتري.api.امتحان;

DisplayName ("فئة اختبار العميل تظهر كيفية يخلقمتداخلة الاختبارات. ")
فصلاختبار العملاء{
محميint معرف العميل = 301;
سلسلة محمية customerName = "مايك ويلسون";
سلسلة المحمية customerCode = "قبل";
محميمزدوج المجموع = 600;

متداخل
@اسم العرض("فئة اختبار منشئ العملاء المتداخلة ضمن فئة اختبار المستوى الأعلى")
فصلCustomerBuilderTest{
زبون الزبون = جديد العميل (معرف العميل ، اسم العميل ، رمز العميل) ؛
مزدوج grandTotal = customer.grandTotal (إجمالي) ؛

@امتحان
@اسم العرض("اختبار العميل'مُنشئو الصفوف ، والمعلمون والمعلمون ، والطرق.")
فارغباني العملاء(){
تأكيد الكل (() -> {
أكد(هوية الزبون, عميل.getCustomerId());
أكد(اسم الزبون, عميل.getCustomerName());
أكد(كود العميل, عميل.getCustomerCode());
أكد(0.10, عميل.نوع العميل(كود العميل));
assertEquals (540 ، grandTotal) ؛
});
}
}
}

فئة CustomerTest هي فئة اختبار المستوى الأعلى لفئة CustomerBuilderTest المتداخلة. يقوم CustomerBuilderTest بإنشاء كائن عميل جديد واختبار مكوناته باستخدام اختبارات التأكيد.

يؤدي تنفيذ فئة اختبار CustomerTest إلى نتائج الاختبار الناجحة التالية:

أسماء فصول الاختبار وطريقة الاختبار وصفية وشاملة ، وذلك بفضل DisplayName تعليق توضيحي.

معرفة كيفية اختبار البرنامج أمر بالغ الأهمية

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

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