Maven surefire 插件不 运行 单一测试,在许多

Maven surefire plugin DOES NOT run single test, out of many

我有一个 Maven 项目(多模块,JDK 11),其中有很多模块和测试。

我突然注意到 我的一个测试 没有作为 surefire 插件的一部分被调用。 同一模块中的其他测试确实可以成功调用。 我能够通过 Intellij 成功地 运行 这个测试。测试不会被禁用或忽略。它包含一组@Test 方法。此外,我可以 运行 它专门使用 mvn test -Dtest=... 参数。

测试class编译成功并出现在target/test-classes中。 (我已经 运行 和 -X 在那里找不到相关的附加数据)

我正在使用 surefire 插件 2.22.1; junit 复古引擎:5.2.0 ; junit-平台-运行ner:1.2.0 ; Spring 引导 2.5.3(带 BOM);我的测试基于 spring 并使用 @ExtendWith(SpringExtension.class) 调用 (不过,我确实有其他基于 spring 的测试会按预期调用)。

在此 之后,我还尝试使用 2.22.2。没有解决问题

在这个 之后,我已经验证并且确实在测试 class 中所有未调用的测试都以 'test' 字作为前缀

编辑: 问题发生在属于我公司较大项目一部分的模块的测试中,该项目继承了 POM 继承链中的各种默认值。不幸的是,我不能只从中分离出我的 POM 并呈现它。 我试图在一个新的独立项目中重现该问题但没有成功(也就是说,所有测试都按预期调用)。

我错过了什么?是否有一个隐藏的 surefire 插件开关可以揭示引擎盖下发生的事情以及 surefire 在哪里拉出他打算执行的测试列表?

surefire 插件(默认情况下)将 运行 仅使用以下名称语法进行测试...

"**/Test*.java" - includes all of its subdirectories and all Java filenames that start with "Test".
"**/*Test.java" - includes all of its subdirectories and all Java filenames that end with "Test".
"**/*Tests.java" - includes all of its subdirectories and all Java filenames that end with "Tests".
"**/*TestCase.java" - includes all of its subdirectories and all Java filenames that end with "TestCase".

可以找到更多详细信息here

问题解决了! 关注@Kathrin Geilmann 评论:

...By default surefire only executes: ...Test.java, Test....java, ...Tests.java and ...TestCase.java

我的文件名以 ...Tester (!@#$$%^)

谢谢。