You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Maven运行已编译单元测试无需重编译且按指定顺序执行

Maven 测试执行问题解决方案

跳过编译直接运行已编译测试

你可以直接调用 Maven Surefire 插件的独立测试目标,关闭编译步骤即可复用之前 mvn test-compile 生成的字节码,无需重新编译项目:

mvn -DskipCompile=true surefire:test

注意:执行前不要运行 mvn clean 命令,确保 target/classes、target/test-classes 目录下的字节码是你需要的最新编译结果。

按自定义列表和指定顺序执行测试

方案一:命令行直接指定顺序

Surefire 插件支持按传入顺序执行-Dtest参数里的测试项,多个测试用逗号分隔即可,执行顺序和你写入的顺序完全一致,示例:

mvn -DskipCompile=true -Dtest=UserServiceTest#testAdd,OrderServiceTest#testQuery,PayServiceTest#testCancel surefire:test

上述命令会严格按照 testAdd → testQuery → testCancel 的顺序执行测试。

方案二:通过测试列表文件固化执行顺序

如果测试数量较多,推荐将测试列表写入独立文件维护,避免每次输入过长命令:

  1. 在项目根目录新建 custom-test-list.txt,按你需要的执行顺序逐行写入测试方法,格式参考:
UserServiceTest#testAdd
OrderServiceTest#testQuery
PayServiceTest#testCancel
  1. 修改 pom.xml 中 Surefire 插件的配置,关联测试列表文件:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>3.2.2</version>
  <configuration>
    <includesFile>custom-test-list.txt</includesFile>
  </configuration>
</plugin>
  1. 直接执行以下命令即可按文件内的顺序运行所有测试:
mvn -DskipCompile=true surefire:test

注意事项

  • 如果你使用 JUnit 5 作为测试框架,需要确保 maven-surefire-plugin 版本不低于 2.22.0,否则自定义测试顺序功能会失效。
  • 如需临时跳过列表中的个别测试,可以在对应行开头加#注释即可,无需修改pom配置。

内容的提问来源于stack exchange,提问作者Kahsius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:06:03