我目前正在创建一个单元自定义JUnit运行器(它将在每个测试方法之前/之后精确调用自定义代码),例如。
class MyRunner extends BlockJUnit4ClassRunner {
private MyApi api = new MyApi();
public MyRunner(Class<?> klass) throws InitializationError {
super(klass);
}
// todo
}
但是,我想支持其他参赛者,例如MockitoJunitRunner
和SpringRunner
,所以我不想重新发明轮子,而是像以下一样使用我的跑步者(使用自定义MyConfig
注释来指定现有的测试跑步者): -
@RunWith(MyRunner.class)
@MyConfig(testRunner=MockitoJUnitRunner.class)
public class MockitoRunnerTest {
}
......或......
@RunWith(MyRunner.class)
@MyConfig(testRunner=SpringRunner.class)
public class MockitoRunnerTest {
}
这意味着测试运行器非常轻,即它类似于Junit规则,只需在调用它自己的代码后代理另一个现有的Junit运行器。
我的直觉是,这已经被实施/解决 - 只是在找到它时遇到了问题。
注意:我希望避免因这些问题而使用规则 - 请参阅Apply '@Rule' after each '@Test' and before each '@After' in JUnit