没有查看JUnit源本身(我的下一步)是否有一种简单的方法来设置默认Runner用于每个测试而不必在每次测试时设置@RunWith?我们有大量的单元测试,我希望能够全面添加一些支持,而无需更改每个文件。
理想情况下,我希望有类似的东西:-Djunit.runner =“com.example.foo”。
答案 0 :(得分:1)
JUnit不支持全局设置跑步者。你可以在基类中隐藏@RunWith,但这可能对你的情况没有帮助。
答案 1 :(得分:1)
我认为这不可能全局定义,但如果编写自己的主函数是一个选项,你可以通过代码做类似的事情。您可以创建自定义RunnerBuilder
并将其与测试类一起传递给Suite
。
Class<?>[] testClasses = { TestFoo.class, TestBar.class, ... };
RunnerBuilder runnerBuilder = new RunnerBuilder() {
@Override
public Runner runnerForClass(Class<?> testClass) throws Throwable {
return new MyCustomRunner(testClass);
}
};
new JUnitCore().run(new Suite(runnerBuilder, testClasses));
这不会与Eclipse中的测试运行程序集成,但对于某些自动测试方案,它可能是一个选项。
答案 2 :(得分:0)
根据您希望实现的目标,您可以使用自定义RunListener
全局影响测试行为。以下是使用Maven Surefire插件配置它的方法:http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters