سؤال

أريد أن أكون قادرًا على إجراء جميع الاختبارات في المشروع برمجيًا.أعلم أن 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);
        }
}

كنت بحاجة لتشغيله من سطر الأوامر، وهذا ما فعلته:

  1. تم تنزيل cp-1.2.6.jar
  2. قم بإنشاء RunAllSuite المذكور سابقًا
  3. تجميع الصف، javac RunAllSuite.java -cp cpsuite-1.2.6.jar;junit-4.8.1.jar
  4. تشغيله مع الاختبارات المستهدفة في مسار الفصل، 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);
        }
}

في الكسوف (أنا باستخدام 4.6.1) - انقر على الحق في مجلد المشروع، حدد "تشغيل ك"، اختر "أداة JUnit اختبار"

ووسيتم تشغيل جميع الاختبارات في هذا المشروع. الشيء نفسه بالنسبة لمجموعة واحدة.

ومع الكسوف نيلي (ربما هيليوس كذلك) في المربع تكوينات تشغيل الحوار، لديك الآن القدرة على تشغيل جميع الاختبارات في المشروع، حزمة أو مصدر المجلد المحدد.

وأيضا إشارة جيدة من الكسوف هي المادة اختبار مع أداة JUnit 4.x من في كسوف .

وأنا أيضا نوصي باستخدام شروح أداة JUnit جناح. اتبع الرابط لمزيد من التفصيل .

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