全局设置JUnit运行器而不是@RunWith

时间:2011-05-04 15:40:27

标签: junit junit-runner

没有查看JUnit源本身(我的下一步)是否有一种简单的方法来设置默认Runner用于每个测试而不必在每次测试时设置@RunWith?我们有大量的单元测试,我希望能够全面添加一些支持,而无需更改每个文件。

理想情况下,我希望有类似的东西:-Djunit.runner =“com.example.foo”。

3 个答案:

答案 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