如何使 Maven Surefire 插件包含正则表达式不匹配特定前缀?

How to Make Maven Surefire Plugin Include Regex not Match a Specific Prefix?

我试图让 maven-surefire-plugin 仅 运行 所有满足以下条件的测试:

有什么办法可以实现吗?

我已经尝试过包含字符串:

**/*Test.java, !%regex[.*(?!Another)SomeTest.*]

但是这不起作用。

使用 a regular expression 有多种可能的解决方案。最简单的是配置

<includes>
  <include>*AnotherSomeTest.java</include>
  <include>%regex[.*(?&lt;!Some)Test\.class]</include>
</includes>

这将匹配 class 名称以 AnotherSomeTestTest but not preceded by Some 结尾的测试(负面回顾 < 只需要用 &lt; 正确转义)。请注意,正则表达式匹配是在 .class 文件上完成的,而传统的匹配是在 .java 文件上完成的。

您可以将其放入一个正则表达式中,

<include>%regex[.*(?&lt;!(?&lt;!Another)Some)Test\.class]</include>

选择所有以 Test 结尾的测试,前面没有 Some,它们本身也没有 Another,尽管它可能不是更清楚。

另一种选择是使用 multiple formats into one,自插件和 JUnit 4 或 TestNG 版本 2.19 起有效。这对命令行特别有用:

<include>%regex[.*(?&lt;!Some)Test\.class], *AnotherSomeTest.java</include>