34

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

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

3 回答 3

33

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

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

于 2012-02-19T22:45:36.997 回答
31

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

于 2012-02-19T22:50:16.957 回答
2

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

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

取自“ Maven Failsafe Plugin: how to use the pre- and post-integration-test phase ”的答案

它归结为:pre-integration-test并且post-integration-test默认情况下什么都不做。您可以将特定于您的任务的插件绑定到这些阶段。查找特定插件取决于您要执行的操作。

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

于 2018-12-17T08:45:52.553 回答