قم بإجراء جميع الاختبارات في Junit 4
سؤال
أريد أن أكون قادرًا على إجراء جميع الاختبارات في المشروع برمجيًا.أعلم أن Eclipse لديه تكوين "Run as JUnit test" والذي يلتقط بطريقة ما جميع الاختبارات في المشروع ويقوم بتشغيلها.هل هناك أي طريقة بالنسبة لي للحصول على قائمة الاختبارات برمجيًا وتشغيلها؟أم أن هناك طريقة جيدة لإنشاء مجموعة اختبار تحتوي على جميع حالات الاختبار دون إدراج كل واحدة منها (أكثر من 700+) يدويًا؟
لقد قمت بتجربة "الجديد...-> خيار Test Suite" في Eclipse، ولكن يبدو أن هذا يعمل فقط مع JUnit 3، مع تحديد الاختبارات من خلال امتدادها من TestCase
فئات الاختبار هي JUnit 4، لذا فإن السمة المميزة الوحيدة لها هي التعليق التوضيحي، ولا توجد اصطلاح تسمية، ولا توجد فئة فرعية من TestCase.
شكرا لك مقدما!
المحلول
وعلى الرغم من أنه لا يحل حقا مشكلة الفورية الخاصة بك، أجد أنه من ممارسة عامة مفيدة جدا لخلق أجنحة وجناح من الأجنحة، على سبيل المثال للحصول على حزمة شيء من هذا القبيل PackageFooSuite
وغيرها، وتجميع هذه الأجنحة في أجنحة واحد أو أكثر من مرة، مثل ModuleFooSuite
ولها جناح واحد على مستوى أعلى، مثل AllTestsSuite
. وبهذه الطريقة فإنه من السهل لتشغيل حد سواء في جميع الاختبارات في خطوة واحدة، وكذلك اختبارات حدة ثانويه لحزمة أعمل حاليا على (ولها اختبارات تشغيل أسرع مما لو كنت تعمل دائما كل واحد منهم):
@RunWith(Suite.class)
@Suite.SuiteClasses({ PackageFooSuite.class, PackageBarSuite.class} )
public final class AllTestsSuite {} // or ModuleFooSuite, and that in AllTests
نصائح أخرى
لم تفعل أي من الإجابات الأخرى ذلك بالنسبة لي.كان لدي 40 ألف اختبار كنت بحاجة إلى إجرائها، لذلك لم يكن إدراج كل فصل يدويًا خيارًا متاحًا.
فعلت ذلك مع ClasspathSuite.مجموعة الاختبار التي تقوم بتشغيل جميع حالات اختبار Junit4 وJunit3 في مسار الفصل هي كما يلي:
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
/* main method not needed, but I use it to run the tests */
public static void main(String args[]) {
JUnitCore.runClasses(RunAllSuite.class);
}
}
كنت بحاجة لتشغيله من سطر الأوامر، وهذا ما فعلته:
- تم تنزيل cp-1.2.6.jar
- قم بإنشاء RunAllSuite المذكور سابقًا
- تجميع الصف،
javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
- تشغيله مع الاختبارات المستهدفة في مسار الفصل،
java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar;path/to/runallsuite/folder;target/classes;target/test-classes RunAllSuite
وهذا كل شيء.باستخدام RunAllSuite أعلاه، في أي مكان في التعليمات البرمجية الخاصة بك، يمكنك فقط إجراء JUnitCore.runClasses(RunAllSuite.class)، الذي يقوم بتشغيل كافة الاختبارات في مسار الفصل الدراسي.هناك أيضًا خيارات تكوين أخرى تم توضيحها في الصفحة الرئيسية لـ ClasspathSuite.
لاحظ أيضًا أن الفصل المذكور أعلاه لا يطبع أي شيء.إذا كانت هناك حاجة لذلك، يمكنك القيام به
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.extensions.cpsuite.ClasspathSuite.*;
import org.junit.runner.RunWith;
import org.junit.runner.JUnitCore;
import org.junit.internal.TextListener;
import static org.junit.extensions.cpsuite.SuiteType.*;
@RunWith(ClasspathSuite.class)
@SuiteTypes({ JUNIT38_TEST_CLASSES, TEST_CLASSES })
public class RunAllSuite {
public static void main(String args[]) {
JUnitCore junit = new JUnitCore();
junit.addListener(new TextListener(System.out));
junit.run(RunAllSuite.class);
}
}
ويمكنك القيام بذلك بسهولة إلى حد ما من داخل مخضرم باستخدام مؤكدة النجاح المساعد أ >: أنا عادة نظيفة / الترجمة / تثبيت مشاريعي من سطر الأوامر قبل مقارنتها للاستخدام الكسوف (mvn eclipse:clean eclipse:eclipse
) ويمكنك تحديد مجموعة اختبار في بوم الخاص بك الذي يسرد كافة الاختبارات التي تريد تشغيلها بشكل جماعي في كل مرة تقوم بتشغيل mvn install
. كنت لا يدعوهم برمجيا، بالضبط، ولكن يمكنك الاتصال بالتأكيد لهم بشكل جماعي.
في الكسوف (أنا باستخدام 4.6.1) - انقر على الحق في مجلد المشروع، حدد "تشغيل ك"، اختر "أداة JUnit اختبار"
ووسيتم تشغيل جميع الاختبارات في هذا المشروع. الشيء نفسه بالنسبة لمجموعة واحدة.
من أعلى رأسي باستخدام الربيع:
- قم بتنفيذ TypeFilter الذي يطابق الفئات مع الأساليب الموضحة بـTest (لا تنس أن تفكر في الفئات الفائقة)
- قم باستدعاء فحص classpath على حزمة الاختبار الأعلى لديك
- قم باستدعاء JUnitRunner مع نتائج الفحص
مزيد من المعلومات حول فحص مسار الفصل ومرشحات النوع المخصص هنا
ومع الكسوف نيلي (ربما هيليوس كذلك) في المربع تكوينات تشغيل الحوار، لديك الآن القدرة على تشغيل جميع الاختبارات في المشروع، حزمة أو مصدر المجلد المحدد.
وأيضا إشارة جيدة من الكسوف هي المادة اختبار مع أداة JUnit 4.x من في كسوف .
وأنا أيضا نوصي باستخدام شروح أداة JUnit جناح. اتبع الرابط لمزيد من التفصيل .