Most lifecycles bind the test goal of the Surefire plugin to the test phase. The Surefire plugin is Maven's unit testing plugin, the default behavior of Surefire is to look for all classes ending in *Test in the test source directory and to run them as JUnit tests. The Surefire plugin can also be configured to run TestNG unit tests.
After running mvn test, you should also notice
that the Surefire produces a number of reports in
target/surefire-reports. This reports directory
will have two files for each test executed by the Surefire plugin: an
XML document containing execution information for the
test, and a text file containing the output of the unit test. If there
is a problem during the test phase and a unit test has failed, you can
use the output of Maven and the contents of this directory to track down
the cause of a test failure. This surefire-reports/
directory is also used during site generation to create an easy to read
summary of all the unit tests in a project.
If you are working on a project that has some failing unit tests,
but you want the project to produce output, you'll need to configure the
Surefire plugin to continue a build even if it encounters a failure. The
default behavior is to stop a build whenever a unit test failure is
encountered. To override this behavior, you'll need to set the
testFailureIgnore configuration property on the
Surefire plugin to true.
Example 4.12. Configuring Surefire to Ignore Test Failures
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
...
</plugins>
</build>
If you would like to skip tests altogether, you can do so by executing the following command:
$ mvn install -Dmaven.test.skip=true
The maven.test.skip variable controls both the
Compiler and the Surefire plugin, if you pass in
maven.test.skip you've told Maven to ignore tests
altogether.
