自定义JUnit Runner,它委托给标准的跑步者

bob*_*sie 7 junit4 junit-runner

我目前正在创建一个单元自定义JUnit运行器(它将在每个测试方法之前/之后精确调用自定义代码),例如

class MyRunner extends BlockJUnit4ClassRunner {

    private MyApi api = new MyApi();

    public MyRunner(Class<?> klass) throws InitializationError {
        super(klass);
    }

    // todo

}
Run Code Online (Sandbox Code Playgroud)

不过,我想支持其他选手如MockitoJunitRunnerSpringRunner这样的,而不是重新发明轮子,我想用我的亚军如下内容(使用自定义MyConfig批注指定现有的测试跑步者): -

@RunWith(MyRunner.class)
@MyConfig(testRunner=MockitoJUnitRunner.class)
public class MockitoRunnerTest {

}
Run Code Online (Sandbox Code Playgroud)

... 要么 ...

@RunWith(MyRunner.class)
@MyConfig(testRunner=SpringRunner.class)
public class MockitoRunnerTest {

}
Run Code Online (Sandbox Code Playgroud)

这意味着测试运行器非常轻,即它类似于Junit规则,并在调用它自己的代码后简单地代理另一个现有的Junit运行器.

我的直觉是,这已经得到实施/解决 - 只是遇到了问题.

注意:由于这些问题,我想避免使用规则 - 请参阅每个'@Test'后的'@Rule'和JUnit中每个'@After'之前的应用'@Rule'