在查看JUnit源代码之前(我的下一步)是否有一种简单的方法可以设置默认的Runner,以便在每个测试中使用,而不必在每个测试上设置@RunWith?我们有一大堆单元测试,我希望能够在整个项目中添加一些支持,而不必更改每个文件。
理想情况下,我希望有类似于:-Djunit.runner="com.example.foo" 的东西。
在查看JUnit源代码之前(我的下一步)是否有一种简单的方法可以设置默认的Runner,以便在每个测试中使用,而不必在每个测试上设置@RunWith?我们有一大堆单元测试,我希望能够在整个项目中添加一些支持,而不必更改每个文件。
理想情况下,我希望有类似于:-Djunit.runner="com.example.foo" 的东西。
我认为这不可能在全局范围内定义,但如果编写自己的主函数是一个选项,您可以通过代码实现类似的功能。您可以创建一个自定义的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中的UI测试运行程序集成,但对于一些自动化测试场景来说,它可能是一个选项。
JUnit不支持全局设置运行器。您可以在基类中隐藏@RunWith,但这可能对您的情况没有帮助。
根据您想要实现的目标,您可能可以通过使用自定义RunListener
全局影响测试行为。以下是如何使用Maven Surefire插件配置它的方法:http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters