我在测试自动化项目中遇到了 Maven 的 Surefire 插件问题。当我使用 mvn test -Dtest=TestClass 运行单个测试类时,它工作正常。但是,使用 mvn test -Dtest=TestSuite 执行我的测试套件会导致无法识别任何测试。输出始终显示“Tests run: 0”,表示没有执行任何测试。此外,当从套件类运行测试时,我收到消息“未找到测试。”
我正在寻求帮助以了解为什么 Maven Surefire 无法识别我的测试套件以及如何解决此问题。任何有关此行为原因和潜在解决方案的见解或建议将不胜感激。
代码:
这是我的 pom.xml: https://pastebin.com/UyeucCKC
这是基本测试类(BaseTest.java)的示例:https://pastebin.com/ihtNkxHp
以及特定测试类的示例(Application1BaseTest.java):https://pastebin.com/WU3fj4Qv 最后,我的套件类(SmokeTests.java):https://pastebin.com/Av9z1PkG
测试结构:我的测试位于src/main/java,这是非常规的,但对于这个项目来说是有意的。
测试注释:我已确保我的测试方法已使用来自 org.junit.jupiter.api.Test
的
@Test
正确注释。
POM 配置:在 pom.xml 中,我将
套件配置:我使用来自 JUnit Jupiter 的 @Suite 和 @SelectClasses 注释创建了一个测试套件类来聚合我的测试。但是,使用 Maven 运行此套件会导致不执行任何测试。
类路径问题:我怀疑可能存在类路径问题,尽管单独运行测试工作正常。
JUnit 5 依赖项:我已确保在我的 pom.xml 中包含所有必要的 JUnit 5 依赖项。
使用 Build Helper 插件中的 add-test-source 目标,将
src/main/java
添加为测试源,如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>process-resources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
并确保您的 JUnit Jupiter 依赖项正确无误;
scope
不应设置或设置为 scope
。