排除在 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 Kind:Tags (JUnit5)
。
要排除“集成测试”,您只需指定为标签:
!integration-test
,并且 IntelliJ 将运行您的所有 JUnit5 测试,但标记为 integration-test
的测试除外。
【讨论】:
查看answer了解详情(包括截图)。【参考方案3】:我会将它们拆分为它们位于不同的包中。毕竟他们在做不同的事情。然后,您可以按包运行测试。 This 链接详细说明了如何执行此操作。
【讨论】:
以上是关于排除在 IntellIJ 中运行的测试的主要内容,如果未能解决你的问题,请参考以下文章