اختبارات جناح Junit ، في المراحل: الكل قبل ، ثم كل

StackOverflow https://stackoverflow.com/questions/3520099

  •  29-09-2019
  •  | 
  •  

سؤال

أرغب في عداء Junit الذي ينفذ جميع أساليب Before ، ثم جميع طرق Test ، ثم جميع طرق After.

هذه هي الطريقة التي تعمل بها اختبارات النظام الخاصة بي. يتم تشغيل طرق Before ، لإعداد بيانات الاختبار والسيناريوهات. بدأ التطبيق. ثم يتم تشغيل أساليب test مع تطبيق التطبيق في الخلفية. يمكن أن تغير طرق Test هذه البيانات أو الاستجابة للتطبيق. ثم ينتظر الإطار حتى ينتهي التطبيق. بعد ذلك ، يتم تشغيل طرق After للتحقق من نتائج الاختبار.

أنا بالفعل استخدم التعليقات التوضيحية Junit ، وطرق التأكيد ، وغيرها من البتات المختلفة. لكنني لا أستطيع معرفة كيفية استخدام عداء Junits لتنفيذ أساليب الاختبار بهذه الطريقة. لم أتمكن من جعل رؤوس أو ذيول واجهة "الكمبيوتر" في Junit 4.8 ، أو معرفة كيفية تطبيق القواعد على هذا.

هل كانت مفيدة؟

المحلول

هذا ليس ما يفعله جونيت. لدى Junit فلسفة التصميم التي تؤكد على اختبارات الوحدة المستقلة. على هذا النحو ، فهو ليس إطارًا طبيعيًا لاختبارات النظام. ما تريد القيام به يناسب بشكل جيد في اختبار (الذي يحاول كهدف التصميم التداخل على اختبارات الوحدة والنظام).

في Junit the @fore و @بعد تشغيله قبل وبعد كل اختبار. يمكنك الحصول على هذا النوع من الأشياء في Junit باستخدام جناح ، والذي يشير إلى جميع الاختبارات الخاصة بك وهو مسؤول عن جميع عمليات الإعداد والدموع ، وبالتالي فإن أساليب Suite's BeboReclass و efterClass يتم تشغيلها قبل وبعد الجناح ، والتي إذا قمت بتنظيمها بشكل صحيح يمكن أن يكون كل اختبارات النظام الخاصة بك.

هناك الكثير من التحديات التنظيمية في الكود عندما تصبح كبيرة مع نهج Junit ، لذلك أقترح عليك التفكير والإطار البديل إذا كان هذا هو الجزء الأكبر مما تريد القيام به.

نصائح أخرى

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

كيندا مثل:

@Before
public void beforeTest(){}

@After
public void afterTest(){}

@Test
public void test(){
    test1();
    test2();
    test3();
}

public void test1(){}

public void test2(){}

public void test3(){}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top