如果发生单元测试失败,Maven 报告插件不会执行
Posted
技术标签:
【中文标题】如果发生单元测试失败,Maven 报告插件不会执行【英文标题】:Maven reporting plugins do not execute if a unit test failure occurs 【发布时间】:2011-04-20 01:07:33 【问题描述】:如果单元测试失败,Maven 报告部分中的任何插件都不会执行。
我发现我可以在这里设置 maven.test.failure.ignore=true - http://jira.codehaus.org/browse/SUREFIRE-247 这种方法的问题是现在我们的 hudson 构建是成功的,即使有单元测试失败。
我真正想做的是将报告插件 maven-surefire-report-plugin 设置为在一个阶段与构建插件一起运行,但我无法让它工作。
如果发生单元测试失败,您知道如何让 Maven 报告插件执行吗?
【问题讨论】:
你有没有想过解决这个问题的方法? 【参考方案1】:首先运行:mvn test OR mvn install 然后,如果测试失败,请运行以下目标以生成上面执行的测试结果的报告:mvn -Dmaven.test.skip=true surefire-report:report
【讨论】:
这可行,但我不确定如何在 hudson CI 构建中做到这一点。关于如何做到这一点的任何建议?感谢您的帮助! 尝试创建两个 Hudson 作业,使其指向项目的一个工作区。在第一份工作中尝试运行 mvn test 或 mvn install 并在另一个工作中执行 mvn -Dmaven.test.skip=true surefire-report:report (不要在第二份工作中运行 mvn clean)【参考方案2】:在您发布的链接中:
使用最新版本(2.1.2),我得到 一条消息说“有一些 测试失败”,但我没有收到任何报告 无论我是否指定 变量,或者我是否指定 插件中的“testFailureIgnore” 配置。我得到了很好的报告 2.0,但不是 2.1.2。
您需要 2,1 版本还是可以使用 2.0 版本的 Maven?
【讨论】:
由于该评论已超过四年,因此我忽略了版本问题。我们目前使用的是 2.2.1,我认为目前无法恢复到 2.0。 ups 对不起,应该找那个。【参考方案3】:您在 2.1.2 中看到的错误是因为您需要在插件中执行的 forkmode 设置。
设置 forkmode=never 并尝试一下(我怀疑你的 useSystemclassloader 属性可能有问题)。
否则,请使用 maven-surefire 插件版本 2.5,即使很少有测试失败,它也应该可以正常工作并生成surefire rpeorts。
【讨论】:
我遇到的问题是在 maven-surefire-report-plugin 中。我实际上是在使用 maven-surefire-report-plugin 从 flexMojos 创建的 surefire 报告中创建报告。也许这是我应该包括的一个细节,但我看不出 maven-surefire-report-plugin 应该如何依赖于 maven-surefire-plugin 中的行为。 首先运行:mvn test OR mvn install 然后,如果测试失败,请运行以下目标以生成上面执行的测试结果的报告: mvn -Dmaven.test.skip=true surefire-report :报告【参考方案4】:如果报告在执行后已经生成,请使用surefire-report:report-only插件。
【讨论】:
所以我正在运行 'mvn install surefire-report:report-only' 但是一旦在安装目标期间发生单元测试失败,surefire-report 插件就永远不会运行(同样的问题)【参考方案5】:我遇到了同样的问题,这是由于对报告插件的错误调用造成的。
maven命令的正确执行是:mvn surefire-report:report
这将自行运行测试阶段,如果失败,它将生成报告。
查看文档: http://maven.apache.org/surefire/maven-surefire-report-plugin/report-mojo.html
希望这会有所帮助!! :D
【讨论】:
以上是关于如果发生单元测试失败,Maven 报告插件不会执行的主要内容,如果未能解决你的问题,请参考以下文章