通过完全限定的包名称包含/排除测试

Include / exclude tests by fully qualified package name

我正在尝试通过完全限定的包名称指定一组测试,在 OpenJDK 11 上使用 Maven 3.6.3 和 maven-surefire-plugin 3.0.0-M5。documentation 状态.. .

As of Surefire Plugin 2.19.1, the syntax with fully qualified class names or packages can be used

...继续举个例子:

<include>my.package.*, another.package.*</include>

如果我在名为 some.test.pkg1 的包中进行测试 class Test1.java 并使用:

<include>some.test.pkg1.*</include>

甚至:

<include>some.test.*</include>

...测试不会执行。这是为什么?


更新 1: 为了提供@khmarbaise 要求的所有信息,我已经将一个小项目推送到 github,请看这里:https://github.com/zb226/so69604251-maven-surefire-plugin


更新 2: @ori-dar 建议删除星号 *(或 .*),但这没有帮助。


更新 3: 我发现提到默认情况下 Maven 期望测试 classes 的名称以 Test 结尾,所以我尝试重命名MavenTest.java 的测试也没有帮助。


更新 4: 对于后代,SUREFIRE-1789 似乎可以解决这个问题。 SUREFIRE-1389 is related. SUREFIRE-1191 introduced the corresponding section in the docs.


更新 5: 我为 Windows/*nix 添加了小型测试运行器到我上面链接的 repo,以检查哪些版本受此行为影响。事实证明它是除 2.19.1 之外的任何一个 - 这意味着官方文档如果不说错误超过 5 年就会产生误导 :(

老实说,这看起来像是 maven-surefire-plugin 中的错误,或者至多是一些未正确记录的行为更改。

我把你发布到 GitHub 的示例,降级到 maven-surefire-plugin 2.19.1,它工作得很好。

您可能想要报告此错误 Apache's Jira