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