排除在IntellIJ中运行的测试

use*_*912 66 java junit intellij-idea maven

在IntelliJ IDEA Ultimate中排除某些测试是不是可以吗?我想在IntelliJ中运行单元测试但排除集成测试.我将集成测试命名为,*IT.java因此Maven故障安全插件可以从单元测试中单独运行它们.

Cra*_*der 108

在" JUnit运行配置"中Test kind,将"设置"设置为" 模式",将以下正则表达式指定为模式:

^(?!.*IT$).*$
Run Code Online (Sandbox Code Playgroud)

它与类名匹配,因此您不需要匹配.java扩展名.如果类名以IT使用否定前瞻结束,则正则表达式将不匹配.

忽略以IT结尾的测试

  • 使用模式`^(?!(.*SlowTest $ |.*SlowSpec $)).*$`省略慢速Junit测试和使用`.*SlowTest`和`.*SlowSpec的约定命名的Spock测试 (6认同)
  • 谢谢你的提示!这在IDEA中工作正常,但会导致在TeamCity下跳过所有测试.似乎TeamCity 8.0.4根本不支持Pattern配置.我应该提出问题吗? (2认同)
  • 提起一个问题,它被接受:http://youtrack.jetbrains.com/issue/TW-34132 (2认同)

Joã*_*nho 6

使用JUnit5,您现在可以标记测试,例如:@Tag("integration-test")

此外,由于支持的IntelliJ现在JUnit5,以及,你可以创建一个JUnit测试配置,并选择测试种类Tags (JUnit5)

要排除“集成测试”,您只需指定为标签: !integration-test,并且IntelliJ将运行您所有的JUnit5测试,但带有标记的测试除外integration-test

  • 查看此[答案](/sf/answers/3567123031/)了解详细信息(包括屏幕截图)。 (2认同)

RNJ*_*RNJ 3

我会将它们分开,因为它们位于不同的包中。毕竟他们在做不同的事情。然后您可以按包运行测试。链接详细介绍了如何执行此操作。