排除在 IntellIJ 中运行的测试

Posted

技术标签:

【中文标题】排除在 IntellIJ 中运行的测试【英文标题】:Excluding tests from being run in IntellIJ 【发布时间】:2012-10-17 17:57:09 【问题描述】:

是否不能排除 IntelliJ IDEA Ultimate 中的某些测试?我想在 IntelliJ 中运行单元测试,但排除集成测试。我将集成测试命名为 *IT.java,以便 Maven 故障安全插件可以将它们与单元测试分开运行。

【问题讨论】:

【参考方案1】:

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

^(?!.*IT$).*$

它与类名匹配,因此您不需要匹配 .java 扩展名。如果类名以IT 结尾,使用negative lookahead,则正则表达式将不匹配。

【讨论】:

感谢您的提示!这在 IDEA 中运行良好,但会导致在 TeamCity 下跳过所有测试。 TeamCity 8.0.4 似乎根本不支持 Pattern 配置。我应该提出问题吗? 使用模式^(?!(.*SlowTest$|.*SlowSpec$)).*$ 省略慢速Junit 测试和以.*SlowTest.*SlowSpec 命名的Spock 测试 顺便说一句,正则表达式可以简化为.*(?<!IT)$【参考方案2】:

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

此外,鉴于 IntelliJ 现在也支持 JUnit5,然后您可以创建 JUnit 测试配置并选择 Test KindTags (JUnit5)

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

【讨论】:

查看answer了解详情(包括截图)。【参考方案3】:

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

【讨论】:

以上是关于排除在 IntellIJ 中运行的测试的主要内容,如果未能解决你的问题,请参考以下文章

在intel idea中添加lombok并自测

在 Intellij 的 bazel 项目中运行测试?

选择要运行的配置类型时,在 IntelliJ IDEA 15 中运行 Gradle 测试而不是 Junit 测试

Specs2 测试无法在 IntelliJ 中原生运行

使用 intellij 运行时单元测试中的系统属性

在 IntelliJ 中,如何调试 Maven 测试目标?