В коммерческом проекте, который я сделал с нуля, я разделил тесты на модули (которые я назвал *Test.java
) и интеграцию (*IT.java
) в соответствии с политиками плагинов Surefire и Failsafe, соответственно. который я использовал для запуска тестов. ИТ, конечно, работают намного медленнее, чем UT.
Это дает возможность запуска группы тестов с простыми командами: mvn test
для UT и mvn integration-test
для UT и IT, а также возможность пропуска только IT с mvn install -DskipITs
.
Еще одна хорошая вещь - это возможность быть более слабыми с результатами интеграционных тестов, так как они терпят неудачу чаще, чем модульные тесты, из-за проблем со средой (т. Е. Слишком долго запускается база данных, слишком рано завершается работа брокера сообщений и скоро). По умолчанию сбой теста Failsafe не приводит к завершению сборки, если вы не указали цель «verify» явно:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<!-- Uncomment this in order to fail the build if any integration test fail -->
<!-- execution> <id>verify</id> <goals><goal>verify</goal></goals> </execution -->
</executions>
</plugin>