Java 自定义JUnit RunnerBuilder
我如何告诉JUnit使用我自己创建的自定义Java 自定义JUnit RunnerBuilder,java,junit,Java,Junit,我如何告诉JUnit使用我自己创建的自定义RunnerBuilder实现 使用自定义的Runner与提供@RunWith注释一样简单。我不知道接下来我该如何告诉JUnit使用哪个RunnerBuilder 仍然没有显示如何指定RunnerBuilder 根据@Duncan的建议,我没有使用RunnerBuilder,而是选择让我的Runner实现本身进行注释查找 在本例中,我让一个运行者委托给另一个运行者,由注释定义,并使用另一个注释来定义应该由其他类加载器加载的类 跑步者: public Qu
RunnerBuilder
实现
使用自定义的Runner
与提供@RunWith
注释一样简单。我不知道接下来我该如何告诉JUnit使用哪个RunnerBuilder
仍然没有显示如何指定
RunnerBuilder
根据@Duncan的建议,我没有使用RunnerBuilder
,而是选择让我的Runner
实现本身进行注释查找
在本例中,我让一个运行者委托给另一个运行者,由注释定义,并使用另一个注释来定义应该由其他类加载器加载的类
跑步者:
public QuarantiningRunner(Class<?> testFileClass) throws InitializationError
{
delegateRunningToDiscoverer = new DelegateRunningToDiscoverer();
quarantinedPatternDiscoverer = new QuarantinedPatternDiscoverer();
Class<? extends Runner> delegateRunningTo = delegateRunningToDiscoverer.getDelegateRunningToOn(testFileClass);
...
公共隔离运行程序(类testFileClass)引发初始化错误
{
DelegateRunningToDiscover=新的DelegateRunningToDiscover();
QuarantinedPatternDiscoveryr=新的QuarantinedPatternDiscoveryr();
类文档中说“一个自定义运行器类,其构造函数采用RunnerBuilder参数,将传递给RunnerBuilder实例”。它的创建方式属于“实现详细信息”类别,您不必担心JUnit不知道要通过哪个RunnerBuilder吗?查看源代码,我能看到的都是JUnit默认RunnerBuilders。@Deejay作为备份计划,您可以随时忽略提供的RunnerBuilder
,并在Runner
@Duncan中使用您自己的Runner
@Duncan-您想将其列为答案,以便你的功劳?这正是我最后所做的。@Deejay如果你写出答案,并给出一些示例代码片段,可能会更好。
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;
}
}