如何使用JUnit4以编程方式执行测试套件?

如何使用JUnit4以编程方式执行测试套件?,junit,automated-tests,junit4,test-suite,Junit,Automated Tests,Junit4,Test Suite,我正在尝试使用API调用JUnit测试套件。我知道您可以使用以下工具来设置测试类: @RunWith(Suite.class) @Suite.SuiteClasses({ Test1.class, Test2.class, ... }) 但是,有没有一种方法可以使用JavaAPI(例如使用JUnitCore)触发整个套件 例如,您可以使用以下代码触发测试: Runner r = try { r = new BlockJUnit4ClassRunner(Class.forName(

我正在尝试使用API调用JUnit测试套件。我知道您可以使用以下工具来设置测试类:

@RunWith(Suite.class)
@Suite.SuiteClasses({
  Test1.class,
  Test2.class, ...
})
但是,有没有一种方法可以使用JavaAPI(例如使用JUnitCore)触发整个套件

例如,您可以使用以下代码触发测试:

Runner r = 
try {
  r = new BlockJUnit4ClassRunner(Class.forName(testClass));
} catch (ClassNotFoundException | InitializationError e) {
  // handle
}
JUnitCore c = new JUnitCore();
c.run(Request.runner(r));
更新:

从API来看,套件类本身似乎是一个运行程序,因此以下代码似乎可以工作:

Suite suite = new Suite(klass, new RunnerBuilder() {
... // Implement methods
});
JUnitCore c = new JUnitCore();
c.run(Request.runner(suite));

但是我不确定这是否是一种推荐的方法,或者编写上述代码是否有任何缺点。

只需指定JUnitCore的套件类名称:

Computer computer = new Computer();

JUnitCore jUnitCore = new JUnitCore();
jUnitCore.run(computer, MySuite.class);

也可以使用命令提示符作为


java org.junit.runner.JUnitCore测试类名

我认为这不符合“编程”的条件。如果您使用runtime.exece调用它,它会的!我一定会试试的。同时,您对我的更新中的代码片段有什么建议吗?