我创建了一个名为 Skip 的注释来忽略某些条件下的测试,到目前为止,我只想忽略该注释是否存在的测试。我还创建了一个过滤器,如下所示。
public class SkipFilter extends Filter {
@Override
public boolean shouldRun(Description description) {
if(description.isTest())
return description.getAnnotation(Skip.class) == null;
else
return true;
}
@Override
public String describe() { return "Tests without annotation Skip"; }
}
我正在使用 JUnitCore.run 调用 FilterRequest 上的测试,如下所示。
FilterRequest request = new FilterRequest(Request.classes(SimpleTests.class),
new SkipFilter());
new JUnitCore().run(request);
SimpleTests.class 是一个具有两个测试 firstTest 和 secondaryTest 的类。 SecondTest 有 @Skip 注释。然而,这两个测试都正在执行。谁能指出我哪里做错了?
我也尝试过 request.getRunner().run(new RunNotifier())
并遇到了相同的测试未被跳过的问题。
最佳答案
确保您已使用 @Retention 创建了 Skip 注释,如下所示,以便 JVM 在运行时保留。这应该可行。
@Retention(RetentionPolicy.RUNTIME)
public @interface Skip {
----
}
关于java - JUnit FilterRequest 未创建过滤测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25130386/