【发布时间】: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 - 谢谢!
-
如果不带星号运行,结果是否相同?
<include>some.test.pkg1</include>而不是<include>some.test.pkg1.*</include>。后者可能会扫描子包中的测试。 -
@OriDar 没有星号的相同结果。如果您想更仔细地检查,请克隆提供的 repo...
标签: java maven junit maven-surefire-plugin