自定义 JUnit RunnerBuilder
Custom JUnit RunnerBuilder
如何告诉 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;
}
}
如何告诉 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;
}
}