我已经使用参数
配置了maven surefire插件<configuration>
<forkedProcessTimeoutInSeconds>60</forkedProcessTimeoutInSeconds>
</configuration>
因此,当测试工作超过60秒时,surefire插件会中断它。
当我使用mvn test
或mvn install
时,一切都在我的本地计算机上完美运行,但是当我尝试在Jenkins上构建项目时,它只是吞下异常,写入日志[ERROR] There was a timeout or other error in the fork
并继续建立。结果我收到Finished: SUCCESS
消息。
问题:有人有这个问题吗?有谁知道任何解决方案?
答案 0 :(得分:1)
maven本地版本和Jenkins maven作业的默认选项之间的一个重要区别是,本地Maven Surefire插件的maven.test.failure.ignore
选项设置为false
(合理),以便测试失败将也失败了。
将此设置为&#34; true&#34;在测试期间忽略失败。它的使用不推荐,但偶尔也很方便。
但是,Maven Jenkins作业将始终运行为true
设置相同的选项,因此即使测试失败也会使Maven构建成功,并将Jenkins作业的状态转换为UNSTABLE
(和不是SUCCESSFUL
或FAILED
,这可能确实是一个争论点。)
官方Jenkins问题ticket
中也记录了此行为遵循Jenkins术语,当(surefire或failafe)测试失败时,Jenkins构建状态必须是不稳定的:
&LT;&LT;如果构建成功并且一个或多个发布者报告它不稳定,则构建不稳定。例如,如果配置了JUnit发布者并且测试失败,则构建将标记为不稳定。 &GT;&GT;
因此,在Maven Jenkins工作中,如果测试失败:
SUCCESSFUL
UNSTABLE
相反,在执行Maven的自由式Jenkins作业中,如果测试失败:
FAILED
FAILED
可能的解决方案:
-Dmaven.test.failure.ignore=false
选项添加到您的构建中(但是,您不再需要构建UNSTABLE
)。