View Source

The golden rule is that _mvn clean install_ should *ALWAYS* return _Build Successful_.
This means that the test suite which is run by default cannot depend on any external resources like database, JMS, Files, WebServices, etc.

This does not mean that you cannot have tests that use _in-memory_, embedded alternatives! For now let's assume that we have two types of tests: simple unit tests that only test business and doesn't need any external environment and tests that need external services. Lets look at a concrete example to make things more concrete.

h2. How to set this up

# Annotate the tests in question
@Test(groups = "external-api")
public void testFetchDataFromExternalAPI() {}
# Configure surefire (in pom.xml) to exclude these groups of tests
<!--Override this property in a maven profile if you want to run all tests. -->

<!-- To run all tests: mvn clean install -Pall-tests -->


# Remember to enable the profile to run all tests in the continuous integration server.
## In Jenkins, Build - Goals and options:
clean source:jar deploy -Pall-tests