maven-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthew Adams <>
Subject Re: maven-failsafe-plugin: what is it actually intended for?
Date Thu, 14 Nov 2013 22:38:48 GMT
Here's a bit less philosophical, more practical description of Surefire v.

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 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".


On Thu, Nov 14, 2013 at 4:30 PM, Matthew Adams <>wrote:

> On Wed, Nov 13, 2013 at 10:39 AM, Ron Wheeler <
>> 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

-- <>

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message