Maven FailSafe 插件的好处
Posted
技术标签:
【中文标题】Maven FailSafe 插件的好处【英文标题】:Benefits of Maven FailSafe Plugin 【发布时间】:2012-03-09 11:49:06 【问题描述】:我读到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 插件吗?
【问题讨论】:
【参考方案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-test
和 post-integration-test
默认不执行任何操作。您可以将特定于您的任务的插件绑定到这些阶段。查找特定插件取决于您要执行的操作。
要指出的另一件重要事情是maven-failsafe-plugin
使用的默认命名约定:它运行名称以IT
开头或结尾的测试类(作为集成测试类)
【讨论】:
以上是关于Maven FailSafe 插件的好处的主要内容,如果未能解决你的问题,请参考以下文章
Maven Failsafe 插件 - SurefireBooterForkException: 分叉进程中出现错误 (TypeNotPresentExceptionProxy)
在多模块 Maven 项目中构建所有模块后,如何运行集成测试?