我可以强制Intellij-IDEA运行被忽略的测试吗?

时间:2014-01-16 23:36:12

标签: java junit intellij-idea junit4

我编写了一个标记为@Ignore的性能测试类,因为它需要很长时间才能运行,我通常不需要运行它。我希望能够右键单击其中一个@Test并说“运行”,但是当我在intellij中执行此操作时,它不会运行测试,因为该类被标记为忽​​略。

我不想评论@Ignore,因为在删除@Ignore的情况下意外提交文件太容易了。但我觉得,如果我明确告诉Intellij运行测试,无论@Ignore如何都应该运行它。请记住,如果我运行一组类(例如:包中的所有类),我仍然希望忽略此测试类。

是否可以在Intellij中获得此功能?

1 个答案:

答案 0 :(得分:6)

我发现this link表示您可以使用Assume.assumeTrue做一些棘手的事情,如果条件为false,则会将测试标记为忽略,并且通常这是在条件中使用的系统属性,因此您可以在命令行中将其作为参数传递。 IntelliJ允许您自定义命令行参数,因此它应该可以工作,但我自己没有尝试过。

链接中的示例是:

@Test
public void shouldTryEveryPossiblePhoneticAttributeSet() throws IOException {
    Assume.assumeTrue(TestEnvironment.hasBigParseSets());
    ...
}

public class TestEnvironment {
   private static final String HAS_BIG_PARSESETS = "hasBigParseSets";
   public static boolean hasBigParseSets(){
      return "true".equalsIgnoreCase(System.getProperty(HAS_BIG_PARSESETS));
   }
}

并且“mvn test -P bigParseSets”vs“mvn test”。

编辑:我刚刚在StackOverflow上找到了this neat thread,它告诉我们如何运行单个junit测试。我假设我不需要引用它,因为它是在StackOverflow上的帖子。这解释了如何从命令行执行此操作,但您应该能够执行与具有类和方法名称的硬编码值的操作非常类似的操作,然后右键单击SingleJUnitTestRunner类并要求IntelliJ运行它