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

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

【问题讨论】:

    标签: java maven junit intellij-idea


    【解决方案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 链接详细说明了如何执行此操作。

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2017-12-09
      • 2015-09-26
      • 1970-01-01
      相关资源
      最近更新 更多