首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在测试失败后强制maven执行下一个目标

问如何在测试失败后强制maven执行下一个目标
EN

Stack Overflow用户
提问于 2017-09-05 10:12:16
回答 2查看 7.4K关注 0票数 7

我在一个项目上运行测试,使用的是安全插件,然后需要生成一个使用“站点”目标的报告,即使有失败的测试。

问题是,在默认情况下,在测试失败的情况下,强制构建失败,并且不会执行进一步的目标。因此,我将以下配置设置为“尽责”:

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.version}</version>
        <configuration>
            <testFailureIgnore>true</testFailureIgnore>
        </configuration>
</plugin>

这很好,“站点”的目标总是被执行,但是在这种情况下,构建的状态总是“成功”,所以我不能设置电子邮件通知。

在“测试”目标之后,是否有一种正确的方法来执行下一个目标,而不忽略万无一失插件中的失败?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-05 10:36:14

你可以用:

  • -DskipTests=true完全跳过测试执行
  • -Dmaven.test.failure.ignore=true忽略测试失败
  • --fail-at-end让构建在测试阶段之后继续,并且只在整个构建周期完成时失败(如果有测试失败)

鉴于这份声明..。

这很好,“站点”的目标总是被执行,但是在这种情况下,构建的状态总是“成功”,所以我不能设置电子邮件通知。

..。我想你想使用--fail-at-end。根据医生的说法,其行为是:

--fail-at-end -如果某个特定模块的构建失败,请继续反应堆的其余部分,并在最后报告所有失败的模块。

票数 10
EN

Stack Overflow用户

发布于 2017-09-05 14:31:55

我在一个项目上运行测试,使用的是安全插件,然后需要生成一个使用“站点”目标的报告,即使有失败的测试。

如果我正确地理解了您的问题,那么您所做的就相当于简单地运行mvn site (或mvn site:stage)目标!它将在运行测试之后生成站点,并且(如果配置为这样的话)包含一个失败和没有失败的报告。它不会失败,因为您没有要求‘测试项目’,而是‘用测试结果构建项目的站点’,这是成功的。

..。构建的状态总是“成功”,所以我无法设置电子邮件通知。

根据您的描述,我假设发送通知是基于构建状态的,并且通知具有到生成站点的链接。如果是这样的话,我可以想到三个选项,它们可以给你你想要的东西:

  • 更改通知,由缺省插件的输出(通常在${basedir}/target/surefire-reports中)触发,而不是生成状态。然后您可以简单地运行mvn site。
  • 以某种方式发布/共享安全输出文件(如果需要的话转换它们),并发出通知指向它们,而不是指向站点。然后您可以简单地运行mvn test。
  • 运行mvn site test,它将首先生成站点(运行测试并忽略生成报告的失败),然后运行测试(再次)以失败构建。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46052425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档