我已经创建了一个名为Skip的注释来忽略具有某些条件的测试,截至目前我只想忽略测试是否存在该注释。我还创建了一个Filter,如下所示。
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和secondTest的类。 secondTest有@Skip注释。但是,两个测试都在执行。任何人都可以指出我在哪里做错了吗?
我也尝试了request.getRunner().run(new RunNotifier())
并遇到了同样的问题,没有被跳过。
答案 0 :(得分:2)
确保已使用@Retention创建了Skip注释,如下所示,以便JVM在运行时保留。这应该有用。
@Retention(RetentionPolicy.RUNTIME)
public @interface Skip {
----
}