我想使用 JUnit 4 创建一个 junit 测试套件,其中要包含的测试类的名称在测试套件运行之前是未知的。
在 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 的某个地方。有谁知道在哪里?