1. Maven surefire plugin
Maven uses this plugin by default for all test runs. So no special configuration is needed to run unit tests. This is what needs to be added for integration tests:
<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugin</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <!-- at first, all integration tests need to be explicitly excluded from all test executions, be it test phase or any other phase where maven-surefire-plugin is invoked on a custom basis. --> <excludes> <exclude>**/*IntegrationTest.java</exclude> </excludes> </configuration> <executions> <execution> <id>integration-test</id> <goals> <goal>test</goal> </goals> <phase>integration-test</phase> <configuration> <!-- Here integration tests are included at the integration-test phase separately. --> <includes> <include>**/*IntegrationTest.java</include> </includes> <!-- a parameter called 'skipIntegration' is the same as 'skipTests' except only for integration tests --> <skipTests>${skipIntegration}</skipTests> </configuration> </execution> </executions> </plugin> ... </plugins> </build>
2. Maven failsafe plugin
This maven plugin includes integration test classes whose names fit '*IT' or '*ITCase' patterns and executes them during integration-test phase. If classes are named that way, then it's enough to simply throw in default maven-failsafe-plugin configuration. However, if classes are named using '*IntegrationTest' pattern, then they have to be excluded from test phase in maven-surefire-plugin configuration, and that pattern has to be defined in maven-failsafe-plugin configuration:
<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugin</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <excludes> <exclude>**/*IntegrationTest.java</exclude> </excludes> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <configuration> <includes> <include>**/*IntegrationTest.java</include> </includes> <skipTests>${skipIntegration}</skipTests> </configuration> <executions> <execution> <id>integration-test</id> <phase>integration-test</phase> <goals> <goal>integration-test</goal> </goals> </execution> <execution> <id>verify</id> <phase>verify</phase> <goals> <goal>verify</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build>
No comments:
Post a Comment