我看到一个奇怪的问题:我有大约 5 个用 java 编写的测试用例,并且我正在使用 maven 运行这些测试用例,但是如果类名不包含,我将无法运行任何测试用例(.java 文件)关键字“测试”。
因此,我可以执行任何包含“Test”的类名(例如 LoginTest),但不能执行任何没有“Test”的类名(例如 LoginModule)。
这不是奇怪的行为。这是一个 Maven 约定。测试类通过使用单词“Test”开始或结束类名来标识。与任何 Maven 约定一样,您可以通过为运行测试的 surefire 插件提供配置来更改它。
谢谢大家,更新 pom.xml 文件后,此问题已解决,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Page.java</include>
<include>**/Page*.java</include>
<include>**/*Test.java</include>
<include>**/Test*.java</include>
</includes>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
重命名您的测试类可能是最简单的。
否则,使用 surefire 插件,您可以指定要包含的测试用例。默认情况下,它具有以下规则:
默认情况下,Surefire 插件会自动包含所有具有以下通配符模式的测试类:
"**/Test*.java"
- 包括其所有子目录和所有以“Test”开头的 java 文件名。"**/*Test.java"
- 包括其所有子目录和所有以“Test”结尾的 java 文件名。"**/*TestCase.java"
- 包括其所有子目录和所有以“TestCase”结尾的 java 文件名。
如果您愿意,也可以包含一个特定的包:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<includes>
<include>**/package/*.java</include>
</includes>
</configuration>
</plugin>
http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html