【问题标题】:Run all unit tests in IntelliJ with RegEx pattern that excludes two different kinds of tests使用排除两种不同测试的 RegEx 模式在 IntelliJ 中运行所有单元测试
【发布时间】:2021-12-06 08:43:33
【问题描述】:

我想在 IntelliJ IDEA 中添加一个运行配置,它允许我只运行单元测试并忽略项目中存在的另外两种类型的测试:集成测试和前端测试。 我们项目中的集成测试遵循命名模式NameOfTestClassIT,而前端测试遵循命名模式T00_00_NameOfTestClass。 我找到了一个很好的解决方案 here 来排除集成测试的执行,我想扩展 RegEx ^(?!.*IT$).*$ 并替换为排除其他命名模式。

我尝试了很多不同的组合,最终得到了这个正则表达式:^(?!(.*IT$)|T[0-9]{2}).*$

我尝试使用 RegEx 检查器来证明该表达式有效,并且可以完美运行。但是当我使用这种模式执行运行配置时,会跳过集成测试,但不会跳过前端测试。 IntelliJ 是否有任何限制,它根本不起作用,或者我的 RegEx 没有做它应该做的事情?

如果有人可以帮助我,我会很高兴!

【问题讨论】:

    标签: java regex intellij-idea junit


    【解决方案1】:

    使用.*,在 IT 测试的末尾带有否定的外观,在前端测试的开头使用带有否定的外观:

    ^(?!T\\d+_).*(?<!IT)$
    

    live demo

    环顾四周的意思是:

    • ^(?!T\\d+_)“开头后面不跟T,然后是数字,然后是下划线”
    • (?&lt;!IT)$“末尾的字符不是IT”

    您可以根据自己的需要改变第一次展望,使其具有或多或少的限制性。

    【讨论】:

    • 感谢您的快速回复和有效的正则表达式。不幸的是,这个 RegEx 也没有过滤前端测试,它们仍在执行,即使它在技术上按预期工作。我假设 IntelliJ 以某种方式无法正确应用 RegEx。
    • 不是展示前端测试的模式,什么是真实的例子?
    • 一个真实的例子是T09_01_SearchCases01
    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 2011-02-10
    • 2013-07-29
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多