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

时间:2012-04-12 15:42:55

标签: junit automated-tests junit4 test-suite

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

@RunWith(Suite.class)
@Suite.SuiteClasses({
  Test1.class,
  Test2.class, ...
})

但是,有没有办法使用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));

更新

从API看来,Suite类本身似乎是一个跑步者,因此以下代码似乎有用:

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

但我不确定这是否是推荐的方法,或者如果编写上述代码有任何不足之处。

2 个答案:

答案 0 :(得分:14)

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

Computer computer = new Computer();

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

答案 1 :(得分:4)

您也可以使用命令提示符

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