JUnit FilterRequest没有创建过滤掉测试

时间:2014-08-05 02:41:24

标签: java junit junit4

我已经创建了一个名为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())并遇到了同样的问题,没有被跳过。

1 个答案:

答案 0 :(得分:2)

确保已使用@Retention创建了Skip注释,如下所示,以便JVM在运行时保留。这应该有用。

@Retention(RetentionPolicy.RUNTIME)
public @interface Skip {
----
}