7

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

class MyRunner extends BlockJUnit4ClassRunner {

    private MyApi api = new MyApi();

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

    // todo

}

但是,我想支持其他跑步者,例如MockitoJunitRunnerand 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”

4

0 回答 0