如何告诉JUnit使用自己创建的自定义RunnerBuilder实现?

使用自定义Runner就像提供@RunWith注释一样简单。我看不到如何告诉JUnit使用哪个RunnerBuilder

The example in the JavaDoc仍然没有显示如何指定RunnerBuilder

最佳答案

遵循@Duncan的建议,我没有理会RunnerBuilder,而是选择让自己的Runner实现自己进行注释查找。

在这种情况下,我有一个赛跑者委派给另一个赛跑者,由一个注释定义,并且还使用另一个注释定义应由其他类加载器加载的类。

跑步者:

public QuarantiningRunner(Class<?> testFileClass) throws InitializationError
{
    delegateRunningToDiscoverer = new DelegateRunningToDiscoverer();
    quarantinedPatternDiscoverer = new QuarantinedPatternDiscoverer();
    Class<? extends Runner> delegateRunningTo = delegateRunningToDiscoverer.getDelegateRunningToOn(testFileClass);
    ...

注释发现者之一:
public class DelegateRunningToDiscoverer
{
    public Class<? extends Runner> getDelegateRunningToOn(Class<?> testClass)
    {
        Class<? extends Runner> runnerClass = BlockJUnit4ClassRunner.class;
        DelegateRunningTo annotation = testClass.getAnnotation(DelegateRunningTo.class);

        if(annotation != null)
        {
            runnerClass = annotation.value();
        }

        return runnerClass;
    }
}

关于java - 自定义JUnit RunnerBuilder,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28593971/

10-10 10:03