Maven FailSafe插件的好处

时间:2012-02-18 06:07:58

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

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

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

3 个答案:

答案 0 :(得分:28)

Failsafe与Surefire有一个重要特征:当测试失败时,它不会立即中止。相反,它允许清理代码运行(通常会关闭Jetty服务器)。

答案 1 :(得分:23)

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

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

答案 2 :(得分:2)

请回答您的第三个问题,因为它并没有真正回答。

  

是否可以在集成前,集成后测试阶段执行服务器启动,关闭,文件解压缩等操作,而无需编写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开头或结尾(作为集成测试类)