I have a maven2 multi-module project and in each of my child modules I have JUnit tests that are named Test.java and Integration.java for unit tests and integration tests respectively. When I execute:
mvn test
all of the JUnit tests *Test.java within the child modules are executed. When I execute
mvn test -Dtest=**/*Integration
none of the Integration.java tests get execute within the child modules.
These seem like the exact same command to me but the one with the -Dtest=/*Integration** does not work it displays 0 tests being run at the parent level, which there are not any tests
06-30-2022 11:36 PM
The Maven build lifecycle now includes the "integration-test" phase for running integration tests, which are run separately from the unit tests run during the "test" phase. It runs after "package", so if you run "mvn verify", "mvn install", or "mvn deploy", integration tests will be run along the way.
By default, integration-test runs test classes named **/IT*.java, **/*IT.java, and **/*ITCase.java, but this can be configured.
For details on how to wire this all up, see the Failsafe plugin, the Failsafe usage page (not correctly linked from the previous page as I write this), and also check out this Sonatype blog post.
08-10-2022 04:40 AM
You should use maven surefire plugin to run unit tests and maven failsafe plugin voojio to run integration tests.
Please follow below if you wish to toggle the execution of these tests using flags.
You can follow the maven documentation omegle shagle to run the unit tests with the build and run the integration tests separately.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>${skipUnitTests}</skipTests> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <configuration> <includes> <include>**/*IT.java</include> </includes> <skipTests>${skipIntegrationTests}</skipTests> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> <properties> <skipTests>false</skipTests> <skipUnitTests>${skipTests}</skipUnitTests> <skipIntegrationTests>${skipTests}</skipIntegrationTests> </properties>
So, tests will be skipped or switched according to below flag rules:
Tests can be skipped by below flags:
Run below to execute only Unit Tests
mvn clean test
You can execute below command to run the tests (both unit and integration)
mvn clean verify
In order to run only Integration Tests, follow
mvn failsafe:integration-test
Or skip unit tests
mvn clean install -DskipUnitTests
Also, in order to skip integration tests during mvn install, follow
mvn clean install -DskipIntegrationTests
You can skip all tests using
mvn clean install -DskipTests
09-22-2022 10:56 PM