在不查看 JUnit 源代码本身(我的下一步)的情况下,是否有一种简单的方法可以设置默认 Runner 以用于每个测试,而不必在每个测试上设置 @RunWith?我们有大量的单元测试,我希望能够全面添加一些支持,而不必更改每个文件。
理想情况下,我希望类似:-Djunit.runner="com.example.foo"。
在不查看 JUnit 源代码本身(我的下一步)的情况下,是否有一种简单的方法可以设置默认 Runner 以用于每个测试,而不必在每个测试上设置 @RunWith?我们有大量的单元测试,我希望能够全面添加一些支持,而不必更改每个文件。
理想情况下,我希望类似:-Djunit.runner="com.example.foo"。
我认为这不可能在全局范围内定义,但是如果可以选择编写自己的 main 函数,则可以通过代码执行类似的操作。您可以创建一个自定义并将其与您的测试类一起RunnerBuilder
传递给 a 。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