What is the difference between Maven Surefire and Maven Failsafe plugins?
I have searched all over web, but did not get the answer.
3 Answers
In simple words, the Failsafe plugin is designed to run integration tests while Surefire to run unit tests.
This is further explained in Maven FAQ:
maven-surefire-pluginis designed for running unit tests and if any of the tests fail then it will fail the build immediately.
maven-failsafe-pluginis designed for running integration tests, and decouples failing the build if there are test failures from actually running the tests.The name "failsafe" was chosen both because it is a synonym of surefire and because it implies that when it fails, it does so in a safe way.
The Failsafe Plugin has two goals:
failsafe:integration-testruns the integration tests of an application,failsafe:verifyverifies that the integration tests of an application passed.
See also:
From https://maven.apache.org/surefire/maven-failsafe-plugin/, I would say that the difference between Surefire and Failsafe is the way they fail:
If you use the Surefire Plugin for running tests, then when you have a test failure, the build will stop at the integration-test phase and your integration test environment will not have been torn down correctly.
The Failsafe Plugin is used during the integration-test and verify phases of the build lifecycle to execute the integration tests of an application. The Failsafe Plugin will not fail the build during the integration-test phase, thus enabling the post-integration-test phase to execute.
In my country its the second google result when searching for "maven failsafe maven surefire" to get to this FAQ: Difference between maven-failsafe-plugin and maven-surefire-plugin which states:
maven-surefire-plugin is designed for running unit tests and if any of the tests fail then it will fail the build immediately.
maven-failsafe-plugin is designed for running integration tests, and decouples failing the build if there are test failures from actually running the tests."