| В теории, модульные тесты не должны зависеть от окружения. Для проверки работоспособности системы в приближенных к реальности условиях, пишутся интеграционные тесты. Для них в maven предусмотрена отдельная фаза сборки проекта. В этой статье хотелось бы поделиться опытом ее использования. |
Стандартная структура мавен-проекта не предусматривает отдельной директории для интеграционных тестов. Тем не менее, удобно хранить интеграционные и модульные тесты в разных директориях. Для реализации этой идеи существует плагин build-helper-maven-plugin.
Для интеграционных тестов я использую директорию integration-test, которая, по аналогии с директорией test, находится в папке src:
src
|-- integration-test
| |-- java
|-- main
| |-- java
| `-- resources
`-- test
|-- java
`-- resources
<plugin>
<groupid>org.codehaus.mojo</groupid>
<artifactid>build-helper-maven-plugin</artifactid>
<version>1.7</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/integration-test/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Если следовать конвенции об именовании тестов (заканчивать имена модульных тестов *Test, а интеграционных *IT), то проблем с интеграционными тестами на этапе модульного тестирования у вас не возникнет.
Но на этапе непосредственно интеграционного тестирования счастья тоже не произойдет. Для счастья придется потрудиться:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>integration-tests</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/*IT.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
Плагин maven-failsafe-plugin специально предназначен для конфигурирования интеграционных тестов. Приведенный пример конфигурации этого плагина вряд ли требует пояснений.
Кстати, по аналогии существует плагин и для конфигурирования модульных тестов. Называется maven-surefire-plugin. И для порядка, можно явно воспользоваться им:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>unit-tests</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludes>
<exclude>**/*IT.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
Очевидно, последние два плагина позволяют формировать собственные договоренности по поводу именования тестовых классов.
Комментариев нет:
Отправить комментарий