Я хотел бы создать набор тестов junit с помощью JUnit 4, где имена тестируемых классов, которые будут включены, неизвестны до тех пор, пока не будет запущен набор тестов.
В JUnit 3 я мог бы сделать это:
public final class MasterTester extends TestCase
{
/**
* Used by junit to specify what TestCases to run.
*
* @return a suite containing what TestCases to run
*/
public static TestSuite suite() {
TestSuite suite = new TestSuite();
for(Class<?> klass : gatherTestClasses()) {
suite.addTestSuite(klass);
}
return suite;
}
}
а метод gatherTestClasses()
- выяснить, какие тестовые классы запускать.
В JUnit 4 в документации говорится, чтобы использовать аннотацию: @SuiteClasses({TestClass1.class, TestClass2.class...})
для создания моего тестового набора. Есть многочисленные ответы SO, показывающие, как это сделать. К сожалению, примеры, которые я вижу, похоже, не позволяют передавать динамически сгенерированный список TestClasses.
Этот SO ответ предложил бы мне подкласс BlockJUnit4ClassRunner
, который я не хочу делать.
Динамически определенные тестовые сеты кажутся чем-то, что должно быть в JUnit 4 где-то. Кто-нибудь знает, где?