java - JUnit FilterRequest 未创建过滤测试

标签 java junit junit4

我创建了一个名为 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/

相关文章:

java - Firebase DataSnapshot 未填充对象

kotlin - 运行JUnit 5测试时,测试类只能有一个构造函数错误

java - 非守护线程输出有时会消失,直到使用 join()

java - 服务正在调用实际的类而不是模拟的类。 Junit4 和 Jmock

java - 使用不同的参数在 Java 中重试 Junit 测试

java - 如何有效地从数据库提供 i18n 消息

java - 导入开源库并将其 javadoc 包含在 RCP 中

java - 测试两个对象实例是否相等 JUnit

grails - Grails 2.0.0 JUnit测试@RunWith注释等效

Java 方法流程