سؤال

لدي فصلين أختبرهما (دعنا نسميهما classa و classb). لكل منها فئة اختبار Junit الخاصة بها (TestClassa و TestClassB على التوالي).

تعتمد Classa على ClassB لعملها الطبيعي ، لذلك أريد التأكد من اجتياز ClassB اختباراته قبل تشغيل TestClassa (وإلا فإن نتائج TestClassa ستكون بلا معنى).

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

هل يمكنني/هل يجب أن ألقي استثناءً من TestClassa إذا لم يتم تمرير اختبارات TestClassb؟ سيتطلب ذلك TestClassB تشغيله بشكل غير مرئي وإبلاغ النجاح/فشله في اختباره ، بدلاً من واجهة المستخدم الرسومية (عبر Junit).

أنا أستخدم Eclipse و Junit 4.8.1

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

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({testClassA.class, testClassBCode.class})
public class testClassB {
}
هل كانت مفيدة؟

المحلول

لا ينبغي أن تعتمد اختبارات وحدتك على الاختبارات الأخرى.

يتمثل أحد الحلول لمشكلتك في السخرية من ClassB في اختبارات الفصل ، من أجل اختبار سلوكها بشكل مستقل عن نتائج اختبارات ClassB.

أنصحك بعطاء mockito محاولة!

نصائح أخرى

يجب أن تحاول testng الإطار الذي يسمح لهذا النوع من اختبار التبعية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top