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

10

在查看JUnit源代码之前(我的下一步)是否有一种简单的方法可以设置默认的Runner,以便在每个测试中使用,而不必在每个测试上设置@RunWith?我们有一大堆单元测试,我希望能够在整个项目中添加一些支持,而不必更改每个文件。

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


1
所以我查看了处理RunWith注释的代码,但我没有看到任何从其他地方提取默认运行器的内容。 - Andrew Mellinger
3个回答

2

我认为这不可能在全局范围内定义,但如果编写自己的主函数是一个选项,您可以通过代码实现类似的功能。您可以创建一个自定义的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测试运行程序集成,但对于一些自动化测试场景来说,它可能是一个选项。


1

JUnit不支持全局设置运行器。您可以在基类中隐藏@RunWith,但这可能对您的情况没有帮助。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接