Reputation: 3086
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
Upvotes: 11
Views: 7918
Reputation: 784
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
Upvotes: 9