Refer following links - GitHub discussion on how to separate Integration Tests and Unit Tests
As a result, I tried this --
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
</includes>
<excludes>
<exclude>**/Abstract*.java</exclude>
<exclude>**/IT*.java</exclude>
<exclude>**/*IT.java</exclude>
<exclude>**/*ITCase.java</exclude>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<includes>
<include>**/IT*.java</include>
<include>**/*IT.java</include>
<include>**/*ITCase.java</include>
<include>**/*IntegrationTest.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
This is working good to some extent. Meaning, surefire doesn't execute Integration tests and Failsafe doesn't execute unit tests.
But, when I run, mvn verify
or mvn integration-test
, the sure-fire plugin is also used.
Required Outcome: When run mvn integration-test
, Unit test shouldn't be run.
The below three images are for mvn verify
Integration Test:
Unit Tests:
The below image is when I ran mvn test
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.
To skip running the tests for a particular project, set the skipTests property to true. You can also skip the tests via the command line by executing the following command: mvn install -DskipTests.
The integration tests for the components of a single project should be within the project. The tests testing the integration of multiple projects with each other should be a separate project.
Maven has a build lifecycle made up out of several phases. When you call a particular one, all phases before that one will be executed first. See https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
There are two ways how you could solve what you want:
-DskipTests
or -Dmaven.test.skip=true
(https://www.mkyong.com/maven/how-to-skip-maven-unit-test/)mvn clean test-compile failsafe:integration-test
Both goals verify
and integration-test
defined in maven-failsafe-plugin
runs integration test cases with surefire. Here things are working as expected and as per guideline provided. pls refer this link
for more details:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With