Maven Surefire和Maven Failsafe插件有什么区别?

bug*_*ker 95 maven maven-surefire-plugin maven-failsafe-plugin

Maven Surefire和Maven Failsafe插件有什么区别?

我在网上搜索但没有得到答案.

请有人帮助这个例子.

ken*_*orb 115

简单来说,Failsafe插件设计用于在Surefire 运行集成测试时运行单元测试.

这在Maven FAQ中进一步解释:

  • maven-surefire-plugin是为运行单元测试而设计的,如果任何测试失败,那么它将立即失败.

  • maven-failsafe-plugin用于运行集成测试,如果实际运行测试存在测试失败,则解耦会导致构建失败.

    之所以选择名称" failafe ",是因为它是surefire的同义词,因为它暗示当它失败时,它会以安全的方式完成.

    故障安全插件有两个目标:

也可以看看:

  • 有趣的问题是_为什么_。许多构建工具都可以完美地工作,而不会做出这种可以说相当人为和有限的区别。将两个插件一起配置并以一致的方式吸收它们的报告就是 PITA。 (9认同)
  • 我认为这个答案未能为故障安全提供具体案例。它还在 Maven 中使用了另外两个生命周期阶段:“集成前测试”和“集成后测试”。这通常用于创建环境,或进行某种外部设置。如果在故障保护中运行时测试失败,则可以保证“post-integration-test”将运行并拆除。这是因为,正如答案中所述,它直到验证阶段才会失败。这是该插件的真正好处,它将始终运行“集成后测试” (2认同)

Jon*_*olf 23

https://maven.apache.org/surefire/maven-failsafe-plugin/,我会说Surefire和Failsafe之间的区别在于它们失败的方式:

如果您使用Surefire插件运行测试,那么当您遇到测试失败时,构建将在集成测试阶段停止,并且您的集成测试环境将不会被正确拆除.

在集成测试和验证构建生命周期阶段期间使用Failsafe插件来执行应用程序的集成测试.在集成测试阶段,Failsafe插件不会使构建失败,从而使后集成测试阶段能够执行.

  • 那么问题就变成了:如果他们告诉我们 Surefire 会让东西处于不正确的状态,为什么还要使用 Surefire? (5认同)

JBA*_*JBA 6

在我的国家,搜索"maven failsafe maven surefire"以获取此常见问题解答时的第二个谷歌搜索结果:https://maven.apache.org/surefire/maven-failsafe-plugin/其中说明:

"Failsafe插件旨在运行集成测试,而Surefire插件则用于运行单元测试."