我想使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
并让该gatherTestClasses()方法处理确定要运行的测试类.
在JUnit 4中,文档说使用注释:@SuiteClasses({TestClass1.class, TestClass2.class...})构建我的测试套件.有很多SO答案显示如何做到这一点.不幸的是,我看到的示例似乎不允许传递动态生成的TestClasses列表.
这个答案建议我必须继承BlockJUnit4ClassRunner我不想做的事情.
动态指定的测试套件似乎必须在某个地方的JUnit 4中.有谁知道在哪里?
如果测试类和JUnit都在类路径上,则可以从命令行运行JUnit测试,如下所示:
java org.junit.runner.JUnitCore TestClass1 TestClass2
Run Code Online (Sandbox Code Playgroud)
现在,有没有办法在包(和子包)中运行所有测试?
我正在寻找类似的东西
java org.junit.runner.JUnitCore com.example.tests.testsIWantToRun.*
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法(不涉及maven或ant)?