当我在 java 项目中运行命令 mvn test 时,它显示 0 个测试正在运行。 src/test/java 下有一个名为 xyzTest.java 的测试文件,尽管我可以转到它并右键单击 Intellij Idea 中的测试文件并运行文件中的所有测试。
我想知道如何在命令行中执行相同的操作。
目前,pom.xml 中只有依赖项,我没有使用任何插件。我读到 Surefire Maven 插件可以帮助解决这个问题。但我觉得很奇怪必须添加一个插件来执行这么简单的事情。当右键单击文件并运行它时,IntelliJ 如何运行它?
有替代方案或任何方法来运行所有测试吗?
我可以通过使用命令行执行 mvn exec:java
您需要添加 Surefire 插件。来自 Maven Surefire 插件文档:“Surefire 插件用于在构建生命周期的测试阶段执行应用程序的单元测试。”
从用法页面: “最佳实践是定义要在 pom.xml 或父 pom.xml 中使用的 Surefire 插件版本:
<project>
[...]
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
[...]
</project>
可以通过调用构建生命周期的测试阶段来调用 Surefire 插件。
mvn test
” 如果您想运行 Maven 阶段并包括测试,则可以运行
mvn test
,如果您想重建并测试项目,则可以运行 mvn clean verify
。
虽然我知道您可能会觉得必须添加插件来执行如此简单的事情很奇怪,但这就是 Maven 的工作原理。来自 关于插件的 Maven 文档:“Maven 本质上是一个插件执行框架;所有工作都是由插件完成的。”
如果您正在执行目标并尝试生成报告,这可能会对您有所帮助。
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<parallel>methods</parallel>
<threadCount>10</threadCount>
<includes>
<include>**/Test*.java</include>
<include>**/Test.java</include>
<include>**/TestCase.java</include>
</includes>
<excludes>
<exclude>**/*Abstract*Test.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.19.1</version>
</plugin>
</plugins>
</reporting>
当你跑步时
mvn clean install
将执行所有测试
您可以使用此命令并运行测试 mvn clean install -U -DskipTests=false