I was having the same issue and tried a few of the suggested options here. I am developing a Spring Boot application using JUnit 5. Unfortunately, none of my integration tests (located in src/test/java
and suffixed with *TestIT.java
) were getting picked up, regardless of the advertising of the plugin to do so. I tried downgrading to 2.18.1 and 2.19.1 and tried both removing the <executions>
and <configuration>
sections to attempt to use even the plugin's default functionality, but no luck.
I finally changed the version to the latest (as of the time of writing) to 2.22.0, and viola. Here is the configuration I added to the <build><plugins>
section of my pom. And even better, I don't need to add executions that define the integration-test
and verify
goals that you see most people include; failsafe executes these by default. I've included my surefire plugin configuration as well, since I am using it to execute unit tests during the test
phase of the maven lifecycle.
Edit: I also had to ad the integration-test
and verify
executions to the plugin configuration as well.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$-->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.0</version><!--$NO-MVN-MAN-VER$ -->
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
And just for good measure, to tell surefire and failsafe to use JUnit 5, I am including this in my <dependencies>
section:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
Eclipse displays a warning (yellow squiggly underline) under the version tag, hence the inclusion of the <!--$NO-MVN-MAN-VER$ -->
error. I'm sure there's a better way to deal with this, but it works for me in this case.
To speed up testing this configuration, and to avoid having to go through all of the earlier lifecycle phases before test
, integration-test
orverify
phases, I used the following commands to quickly validate:
mvn failsafe:integration-test
(runs only integration tests)
mvn surefire:test
(runs only unit tests)
- (I obviously run the entire lifecycle when it counts)
Hope this helps someone. Cheers!