It appears that there are multiple use cases for failsafe. I tend to use it for slow tests that don’t necessarily need to pass at the moment, but for which I want to know the percentage passing. Accordingly, I bind the integration-test goal but NOT the verify goal.
On Nov 15, 2013, at 1:57 AM, Vincent Latombe <vincent.lato...@gmail.com> wrote: > maven-failsafe-plugin implies some specific steps are required *before* > (pre-integration-test) and *after* (post-integration-test) the test > execution, which allows to do fire up a container then turn it off after > the tests (for example). > > Then, only after these, the test results are evaluated during 'verify' > phase and will fail the build if needed. > > This is unlike maven-surefire-plugin, that performs both the tests > execution and verification in the same step, which prevents you from doing > any kind of cleanup outside of test execution. > > So, using failsafe or surefire boils down to a single question : do you > need to perform any set up/teardown outside of the test execution > framework? If yes, use failsafe, if no, use surefire > > Cheers, > > Vincent > > Vincent > > > 2013/11/15 Vincent Latombe <vincent.lato...@gmail.com> > >> you mean 'verify', not 'validate' >> >> Vincent >> >> >> 2013/11/14 Matthew Adams <matt...@matthewadams.me> >> >>> Here's a bit less philosophical, more practical description of Surefire v. >>> Failsafe. >>> >>> Remember that if you use the maven-surefire-plugin, it's going to execute >>> during the Maven "test" phase by default, and fail the build on errors >>> _during that phase_ if any tests fail. >>> >>> The maven-failsafe-plugin executes during Maven's "integration-test" and >>> "validate" phases. *Remember to specify both goals!* See >>> http://maven.apache.org/surefire/maven-failsafe-plugin/usage.html and >>> notice that _both_ goals, integration-test & validate, need to be >>> specified. This allows the integration tests to execute & possibly fail >>> without _immediately_ failing the build. The failing of the build happens >>> via maven-failsafe-plugin during the validate phase, so that other plugins >>> can clean things up during Maven's "post-integration-test" phase, which >>> precedes "validate". >>> >>> HTH, >>> Matthew >>> >>> >>> On Thu, Nov 14, 2013 at 4:30 PM, Matthew Adams <matt...@matthewadams.me >>>> wrote: >>> >>>> On Wed, Nov 13, 2013 at 10:39 AM, Ron Wheeler < >>>> rwhee...@artifact-software.com> wrote: >>>> >>>>> On 13/11/2013 11:16 AM, Matthew Adams wrote: >>>>> >>>>>> I don't think timing should be the heuristic here. The fact that unit >>>>>> tests take less is a result of the fact that what you're testing, aka >>> the >>>>>> "unit", tends to be small. After all, a unit test should test a >>> "unit". >>>>>> >>>>> So what is your definition? >>>>> >>>> "A unit test is test code that tests a unit in isolation." It's >>>> intentionally ambiguous, because a unit is relative and may differ. >>>> >>>> >>>>> >>>>>> An integration test, then, if I were defining it strictly, would be >>>>>> anything that's not a unit test. In practice, this usually means >>>>>> replacing >>>>>> any mocks and/or stubs in your unit tests with the real >>> implementations, >>>>>> plus using any other supporting infrastructure, like databases, >>>>>> dependency >>>>>> injection contexts, etc. >>>>>> >>>>> Not sure that this is true for all integration tests. You may be able >>> to >>>>> test the integration of two projects (a web service and a database >>> access >>>>> layer) while still using mocks and stubs (mock of a database >>> persistence >>>>> layer). >>>>> People frequently test with Jetty when the final project will run on >>>>> Tomcat. >>>>> It all depends on what part of the system integration is being tested. >>>>> >>>> >>>> I didn't say it had to be what's used in production. The key difference >>>> is that you're using _something_, in addition to the unit. >>>> >>>> -matthew >>>> >>> >>> >>> >>> -- >>> mailto:matt...@matthewadams.me <matt...@matthewadams.me> >>> skype:matthewadams12 >>> googletalk:matt...@matthewadams.me >>> http://matthewadams.me >>> http://www.linkedin.com/in/matthewadams >>> >> >> ----------------- Author, Getting Started with Apache Maven <http://www.packtpub.com/getting-started-with-apache-maven/video> Come read my webnovel, Take a Lemon <http://www.takealemon.com>, and listen to the Misfile radio play <http://www.fuzzyfacetheater.com/misfile/>!