Maven Surefire和Maven故障保护插件之间有什么区别?

Maven Surefire和Maven故障保护插件之间有什么区别?,maven,maven-surefire-plugin,maven-failsafe-plugin,Maven,Maven Surefire Plugin,Maven Failsafe Plugin,Maven Surefire和Maven故障保护插件之间有什么区别? 我在网上搜索了很多次,但没有找到答案。从中,我可以说Surefire和Failsafe的区别在于它们的失败方式: 如果您使用Surefire插件运行测试,那么当您遇到测试失败时,构建将在集成测试阶段停止,并且您的集成测试环境将无法正确拆除 故障保护插件在构建生命周期的集成测试和验证阶段用于执行应用程序的集成测试。故障保护插件在集成测试阶段不会使构建失败,因此可以执行集成后测试阶段 在我的国家,这是谷歌搜索“maven fail

Maven Surefire和Maven故障保护插件之间有什么区别?
我在网上搜索了很多次,但没有找到答案。

从中,我可以说Surefire和Failsafe的区别在于它们的失败方式:

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

故障保护插件在构建生命周期的集成测试和验证阶段用于执行应用程序的集成测试。故障保护插件在集成测试阶段不会使构建失败,因此可以执行集成后测试阶段


在我的国家,这是谷歌搜索“maven failsafe maven surefire”的第二个搜索结果,以获得以下常见问题解答:其中说明:

maven surefire插件是为运行单元测试而设计的,如果任何测试失败,它将立即使构建失败

maven failsafe插件是为运行集成测试而设计的,并且 如果测试失败,则将失败的构建与实际的构建分离 运行测试。”


简单地说,故障保护插件设计用于运行集成测试,而Surefire设计用于运行单元测试

下文对此作了进一步解释:

  • 设计用于运行单元测试,如果任何测试失败,那么它将立即使构建失败

  • 设计用于运行集成测试,并在测试失败时与实际运行测试分离失败的构建

    之所以选择“failsafe”这个名称,是因为它是surefire的同义词,也因为它意味着当它发生故障时,它会以安全的方式进行操作

    故障保护插件有两个目标:

    • 运行应用程序的集成测试
    • 验证应用程序的集成测试是否通过
另见:

  • 至少

有趣的问题是为什么。许多构建工具都能完美地工作,但却没有人为的和有限的区别。将两个插件配置在一起并以一致的方式吸收它们的报告是一个相当大的问题。不,其他答案中所述的差异并不能提供足够的理由来实现多个插件ls表示什么应该是过滤器和标志。我认为这个答案无法说明故障保护的具体情况。它还在maven中使用了另外两个生命周期阶段,
pre-integration test
post-integration test
。这通常用于启动环境或进行某种外部设置。如果在故障保护,可以保证
集成后测试
将运行并将其拆除。这是因为,如回答中所述,它在验证阶段之前不会失败。这是插件的真正好处,它将始终运行
集成后测试
,从技术上讲,插件本身不会执行这些阶段,但它会执行按照惯例。当检测到测试失败并且没有执行后续的maven生命周期阶段时,Surefire将立即失败。然后问题就变成了:如果他们告诉我们Surefire会让东西处于错误状态,为什么还要使用Surefire?