我读Maven Failsafe plugin专门用于运行集成测试。目前我正在开发一个多模块项目,集成测试在它自己的独立模块中,用TestNg编写并使用Surefire plugin运行。我们没有与单元测试冲突,因为只有集成测试在该模块的测试阶段运行。要在测试之前设置环境,并在运行测试后清除它,请使用@BeforeSuite @AfterSuite
TestNg注释。因此,无需使用Failsafe插件使用的pre-integration-test
阶段,integration-test
阶段,post-integration-test
阶段。
pre-integration-test
,post-integration-test
阶段进行服务器启动,关闭,解压缩等,而无需编写maven插件吗?答案 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-test
和post-integration-test
默认不执行任何操作。您可以将特定于您的任务的插件绑定到这些阶段。查找特定的插件取决于您要执行的操作。
需要指出的另一件事是maven-failsafe-plugin
使用的默认命名约定:它运行测试类,其名称以IT
开头或结尾(作为集成测试类)