How to run all tests in a particular package with Maven?
You can take reference from the following scenarios:
(1) Skip all test execution during maven build
mvn package -DskipTests
(2) Execute All test cases
mvn test
(3) Execute specific test group
mvn test -DincludeGroups=TestGroup1,TestGroup2
(4) Exclude specific test group during execution
mvn test -DexcludeGroups=TestGroup3,TestGroup4
(5) Execute specific package testcases
mvn test -Dtest="test.java.com.service.map.**"
(6) Execute specific test
mvn test -Dtest=Test1,Test2
I hope it will be more helpful to you with a different combination of execution.
AFAIK there are no command line parameter for surefire:test to run tests in a specific package.
I use a configuration variable to achieve the same effect. A fragment of my pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<configuration>
<includes>
<include>**/${testGroup}/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
Now if I want to run tests in a package named "com.example", I use the following command:
mvn test -DtestGroup=com/example
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.*
...and if you want to include all sub packages:
mvn test -Dtest=com.myrootpackage.myfirstlevelpackage.**.*
You could use a pattern as well, for example
mvn '-Dtest=de.mypackage.*Test' test
runs all tests in classes from package de.mypackage ending on *Test
.
[update 2017/12/18]:
Since this became the accepted answer, here's some further information:
- Maven uses the Maven Surefire plugin to execute tests.
The syntax used above (qualified package name) requires Surefire version
2.19.1
or higher! Earlier versions require the use of path expressions, for examplemvn -Dtest="de/mypackage/*Test" test
I'm using quotes (` or ") to prevent the shell from performing pathname expansion, Maven doesn't require any quotes.
A single test method can be exuted using the following syntax
mvn -Dtest=MyUnitTest#testMethod test
All tests from subpackages may be includes as well, in order to execute all tests in or beneath package
de.mypackage.sub
execute:mvn -Dtest="de/mypackage/sub/**" test
or with Surefire
2.19.1
or highermvn -Dtest="de.mypackage.sub.**" test
There are further possibilities like using regular expressions, see the official documentation of running a single test.