在我的项目POM文件中,我需要配置后执行步骤。即在执行了测试单元测试后,执行后。 job将解析testng-xml-report并生成统计页面。报告生成将由一个单独的Jar完成。这个Jar将在POM的verify
阶段调用。
但是目前的问题是,对于test
阶段的测试成功情况,它将调用Jar并正常工作。对于失败案例,将生成xml报告,但由于test
阶段失败,因此不会继续verify
阶段。
那么有什么方法可以为Jar调用指定必须运行 maven-exec-plugin 的 exec 目标,无论test
阶段是否成功。
答案 0 :(得分:2)
此方案的正确解决方案是不要使测试失败。测试应记录失败(例如在XML报告中),但跑步者必须向Maven返回“成功”。
对于Surefire,您可以使用-DtestFailureIgnore=true
编辑您可以将其放入POM中永久激活它。
但是如果你用不同的目标调用maven,结果可能是不合需要的。例如,对于mvn deploy
,您可能希望在测试失败时停止进程。
要解决此问题,您有两种选择:
[编辑] 有关选项#1的详细信息:您可以编写一个运行带有-DtestFailureIgnore=true
的Maven的shell脚本来创建报告。
然后,您需要一个可以找到XML报告并检查其中是否有任何错误的实用程序。如果您使用Java,请在发现错误时调用System.exit(1)
。如果您更喜欢命令行,请使用XMLStarlet针对XML运行查询,使用find(1)
之类的工具来查找XML文件。如果您需要帮助,请发布新问题。
在shell脚本中使用util || exit 1
在Maven之后调用此实用程序 - 如果实用程序发现错误,将停止使用错误代码1
的shell脚本。
使用此脚本构建而不是嵌入式Maven运行器。
答案 1 :(得分:0)
您可以使用mvn -fn clean install
-fn
代表“永不失败”,即使某个细分失败,它也会一直持续。
有关更多选项,请参阅mvn -help