在不研究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测试运行器集成在一起,但是对于某些自动化测试方案来说,它可能是一个选择。

10-08 00:08