0
点赞
收藏
分享

微信扫一扫

eclipse build Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project hisystem: There are test failures.

🔍 错误含义:

Maven 在执行单元测试(test 阶段)时发现了 测试失败(test failures),因此构建被标记为失败,阻止了后续打包(如生成 jar/war)等操作

这不是编译错误,而是 单元测试没通过

✅ 如何解决?

✅ 第一步:查看具体的测试失败报告

Maven 提示你:

Please refer to D:\javaPro\hisystem-master\target\surefire-reports for the individual test results.

进入这个目录:

D:\javaPro\hisystem-master\target\surefire-reports

里面会有类似以下文件:

  • TEST-com.example.hisystem.UserServiceTest.xml
  • com.example.hisystem.UserServiceTest.txt

打开 .txt 文件,你会看到:

  • 哪个测试类、哪个测试方法失败了
  • 失败的原因(比如 NullPointerException、断言失败 AssertionError 等)
  • 堆栈跟踪(stack trace)

📌 示例:

Test set: com.example.hisystem.UserServiceTest
Tests run: 3, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.52 s <<< FAILURE!
testCreateUser  Time elapsed: 0.01 s  <<< FAILURE!
java.lang.AssertionError: expected:<true> but was:<false>
    at com.example.hisystem.UserServiceTest.testCreateUser(UserServiceTest.java:25)

→ 这说明 testCreateUser 方法中,期望结果是 true,但实际是 false

✅ 第二步:临时跳过测试(仅用于调试或紧急打包)

如果你只是想先打包看看,跳过测试(不推荐长期使用):

mvn install -DskipTests

或者(更暴力,不编译测试代码):

mvn install -Dmaven.test.skip=true

⚠️ 注意:这只是“绕过”问题,不是“解决问题”。

✅ 第三步:修复测试失败(推荐做法)

根据 surefire-reports 中的错误信息:

  1. 打开失败的测试类(如 UserServiceTest.java
  2. 找到失败的测试方法(如 testCreateUser()
  3. 检查:
  • 是否依赖数据库?数据库是否启动?
  • 是否有 Mock 没配置好(如使用了 Mockito)?
  • 是否数据断言写错了?
  • 是否服务层/DAO 层有空指针?

常见原因:

原因

解决方案

数据库未连接

启动 MySQL,检查 application.properties 配置

测试数据缺失

在测试中添加 @BeforeEach 初始化数据

使用了 @Mock 但未 when(...).thenReturn(...)

补全 Mock 行为

断言逻辑错误

修改 assertEquals 等断言条件

✅ 第四步:启用详细日志(可选)

按提示使用 -e-X 查看更详细错误:

mvn test -e

mvn test -X

  • -e:显示错误堆栈
  • -X:开启调试模式,输出所有日志(很详细)

✅ 总结:解决步骤

  1. ✅ 进入 target/surefire-reports/ 查看哪个测试失败
  2. ✅ 打开对应的 .txt 文件,看具体错误堆栈
  3. ✅ 修复代码或测试逻辑
  4. ✅ 再次运行 mvn test 直到通过
  5. ✅ 最后运行 mvn install 正常打包
举报

相关推荐

0 条评论