【问题标题】:Benefits of Maven FailSafe PluginMaven FailSafe 插件的好处
【发布时间】:2012-03-09 11:49:06
【问题描述】:

我读到Maven Failsafe plugin 是专门为运行集成测试而设计的。目前我正在开发一个多模块项目,集成测试在它自己的单独模块中,用 TestNg 编写并使用Surefire plugin 运行。我们与单元测试没有冲突,因为在该模块的测试阶段只运行集成测试。并且为了在测试之前设置环境,在测试运行之后清理它,使用@BeforeSuite @AfterSuiteTestNg 注释。所以Failsafe插件使用的pre-integration-test阶段,integration-test阶段,post-integration-test阶段就没有必要了。

  • 如果不使用 Failsafe 插件,我还错过了什么好处吗?
  • 有没有更好的方法来使用 Failsafe 插件来满足我当前的需求?
  • 我可以在pre-integration-testpost-integration-test 阶段进行服务器启动、关闭、文件解压缩等操作,而无需编写 maven 插件吗?

【问题讨论】:

    标签: maven integration-testing testng maven-surefire-plugin maven-failsafe-plugin


    【解决方案1】:

    如果您的套件中已经有自己的测试设置/拆卸,从外观上看,您可以从 FailSafe 插件中获得多少收益。

    FailSafe 插件在您的被测系统的设置成本高昂或需要很长时间(例如启动 Servlet 或分布式系统)的情况下很有用。 FailSafe 插件在这些情况下派上用场的方式是您可以在pre-integration-test 阶段设置此环境。当测试失败时,此插件也不会停止执行 Maven 构建,它允许您在 post-integration-test 阶段清理所有工件,之后它会检查您的测试状态并通过或失败构建相应地在verify 阶段。

    【讨论】:

    • 什么意思?如果不使用 skipAfterFailureCount=1,whjch 不是默认选项,如果测试失败,imvn 测试不会中止
    【解决方案2】:

    Failsafe 与 Surefire 相比有一个很大的特点:当测试失败时,它不会立即中止。相反,它让清理代码运行(这通常会关闭 Jetty 服务器)。

    【讨论】:

    • 什么意思?如果不使用skipAfterFailureCount=1,whjch不是默认选项,imvn测试直到结束才会中止
    • @Whimusical 当至少一个测试因万无一失而失败时,Maven 将默认在test 阶段之后停止构建。使用故障保护插件,integration-test 阶段将始终成功,然后post-Integration-test 将运行,然后在verify 阶段构建将失败
    【解决方案3】:

    解决你的第三个问题,因为它没有真正得到回答,恕我直言。

    我是否可以在不编写 maven 插件的情况下在预集成测试、后集成测试阶段进行服务器启动、关闭、文件解压缩等操作?

    取自this answer 到“Maven Failsafe Plugin: how to use the pre- and post-integration-test phases

    归结为:pre-integration-testpost-integration-test 默认不执行任何操作。您可以将特定于您的任务的插件绑定到这些阶段。查找特定插件取决于您要执行的操作。

    要指出的另一件重要事情是maven-failsafe-plugin 使用的默认命名约定:它运行名称以IT 开头或结尾的测试类(作为集成测试类)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 2019-08-31
      相关资源
      最近更新 更多