How to run Maven Failsafe integration tests from a jar file? How to run Maven Failsafe integration tests from a jar file? docker docker

How to run Maven Failsafe integration tests from a jar file?


From the docs:

Since version 2.22.0 you can scan for test classes from a project dependency of your multi-module project.

It means the tests (proj-tests.jar) must be a dependency of the project. As you cannot have a dependency to the tests jar in the same project where you build them, the solution is to have another module or pom file. Example:

<groupId>failsafe.use.jar</groupId>  <artifactId>failsafe-use-jar</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <dependencies>    ...    <dependency>      <groupId>com.myorg</groupId>      <artifactId>proj-tests</artifactId>      <version>0.0.1-SNAPSHOT</version>      <classifier>tests</classifier>    </dependency>    ...  </dependencies>   <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-failsafe-plugin</artifactId>        <version>2.22.2</version>      </plugin>    </plugins>  </build> 

The proj-tests is a project dependency and can be created with:

 <groupId>com.myorg</groupId>  <artifactId>proj-tests</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging> ...  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-jar-plugin</artifactId>        <version>3.1.2</version>        <executions>          <execution>            <goals>              <goal>test-jar</goal>            </goals>          </execution>        </executions>      </plugin>    </plugins>  </build>

See Guide to using attached tests

To run the integration tests from the container you obviously need all the dependencies installed in the local (container) maven repository or deployed in remote. Then you can run with:

mvn failsafe:integration-test -DdependenciesToScan=com.myorg:proj-tests

Note that the format of the dependenciesToScan property is groupId:artifactId (you run with the name of jar instead of artifactid)

As another note, for integration tests failsafe searches by default for class files ending in IT (integration test).