开发者

Globally setting a JUnit runner instead of @RunWith

开发者 https://www.devze.com 2023-03-03 00:51 出处:网络
Wit开发者_JS百科hout looking into JUnit source itself (my next step) is there an easy way to set the default Runner to be used with every test without having to set @RunWith on every test?We\'ve got a

Wit开发者_JS百科hout looking into JUnit source itself (my next step) is there an easy way to set the default Runner to be used with every test without having to set @RunWith on every test? We've got a huge pile of unit tests, and I want to be able to add some support across the board without having to change every file.

Ideally I'm hope for something like: -Djunit.runner="com.example.foo".


I don't think this is possible to define globally, but if writing you own main function is an option, you can do something similar through code. You can create a custom RunnerBuilder and pass it to a Suite together with your test classes.

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));

This won't integrate with UI test runners like the one in Eclipse, but for some automated testing scenarios it could be an option.


JUnit doesn’t supporting setting the runner globally. You can hide away the @RunWith in a base class, but this probably won't help in your situation.


Depending on what you want to achieve, you might be able to influence the test behavior globally by using a custom RunListener. Here is how to configure it with the Maven Surefire plugin: http://maven.apache.org/plugins/maven-surefire-plugin/examples/junit.html#Using_custom_listeners_and_reporters

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号