【问题标题】:Include / exclude tests by fully qualified package name通过完全限定的包名称包含/排除测试
【发布时间】:2021-10-17 12:16:44
【问题描述】:

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

从 Surefire 插件 2.19.1 开始,具有完全限定类的语法 可以使用名称或包

...接着举个例子:

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

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

<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 期望测试类的名称以 Test 结尾,所以我尝试将测试重命名为 MavenTest.java,但没有帮助要么。


更新 4: 对于后代,SUREFIRE-1789 似乎可以处理这个确切的问题。 SUREFIRE-1389 是相关的。 SUREFIRE-1191 介绍了corresponding section in the docs


更新 5: 我在上面链接的存储库中添加了适用于 Windows/*nix 的小型测试运行程序,以检查哪些版本受此行为影响。事实证明它是除了 2.19.1 之外的所有版本 - 这意味着如果现在 5 年多没有说错的话,官方文档会产生误导:(

【问题讨论】:

  • 请显示完整的pom文件...日志文件输出...以及未执行的测试用例...正在使用哪个JDK版本?
  • @khmarbaise:更新了问题,请查看 repo - 谢谢!
  • 如果不带星号运行,结果是否相同? &lt;include&gt;some.test.pkg1&lt;/include&gt; 而不是 &lt;include&gt;some.test.pkg1.*&lt;/include&gt;。后者可能会扫描子包中的测试。
  • @OriDar 没有星号的相同结果。如果您想更仔细地检查,请克隆提供的 repo...

标签: java maven junit maven-surefire-plugin


【解决方案1】:

说实话,这看起来像是 maven-surefire-plugin 中的错误,或者充其量是一些没有正确记录的行为更改。

我将您发布到 GitHub 的示例降级为 maven-surefire-plugin 2.19.1,它运行良好。

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

【讨论】:

  • 你是对的,它从 2.20 版开始停止工作。到目前为止,我还没有降低版本...
猜你喜欢
  • 1970-01-01
  • 2019-05-16
  • 2014-06-07
  • 2018-08-21
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
相关资源
最近更新 更多