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

Nee*_*eel 10 junit automated-tests junit4 test-suite

我试图使用API​​调用JUnit测试套件.我知道您可以使用以下方法来配置测试类:

@RunWith(Suite.class)
@Suite.SuiteClasses({
  Test1.class,
  Test2.class, ...
})
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法使用Java API触发整个套件,例如使用JUnitCore?

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

Runner r = 
try {
  r = new BlockJUnit4ClassRunner(Class.forName(testClass));
} catch (ClassNotFoundException | InitializationError e) {
  // handle
}
JUnitCore c = new JUnitCore();
c.run(Request.runner(r));
Run Code Online (Sandbox Code Playgroud)

更新:

从API,似乎Suite类本身是一个跑步者,因此以下代码似乎工作:

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

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

Mat*_*ell 14

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

Computer computer = new Computer();

JUnitCore jUnitCore = new JUnitCore();
jUnitCore.run(computer, MySuite.class);
Run Code Online (Sandbox Code Playgroud)