Как запустить UnitTests в maven, который находится в папке src/test-integration/java
Когда мы говорим тест mvn, обычным способом является то, что maven будет искать тесты, присутствующие в папке src/test/java. Но у меня есть мои тесты в другой папке, а именно src/integration-test/java. Как запустить тесты, присутствующие в этой папке, через командную строку?
Спасибо заранее,
Манодж.
Ответы
Ответ 1
Сначала вы не должны запускать эти теги интеграции через test жизненный цикл, вызывать
pre-integration-test, интеграция-тест и пост-интеграция-тест. Кроме того, для интеграционных тестов отвечает maven-failsafe-plugin.
Существует несколько вариантов обработки ваших ситуаций. Сначала вы должны следовать соглашениям об именах для тестов интеграции
<includes>
<include>**/IT*.java</include>
<include>**/*IT.java</include>
<include>**/*ITCase.java</include>
</includes>
что означает поставить тесты интеграции в папку по умолчанию src/test/java. Если у вас многомодульная сборка, лучше всего иметь отдельный модуль, который содержит только тесты интеграции, или вы можете пойти по пути, по которому вы решили использовать отдельную папку (что не так):
Сначала вам нужно добавить папку с помощью buildhelper-maven-plugin, чтобы эти теги интеграции были скомпилированы следующим образом:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>process-resources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/integration-test/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
и вам нужно настроить maven-отказоустойчивый плагин следующим образом:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.14.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
После того, как вы настроили, вы можете выполнить свои интеграционные тесты с помощью:
mvn verify
Ответ 2
@khmarbaise прав с его рекомендацией (так +1 для этого), но я хочу ответить на ваш вопрос, не размышляя о причинах, по которым источник тестирования находится где-то в другом месте.
Если ваши тесты находятся в другом каталоге, а не в стандартном каталоге src/test/java
, самым простым решением является изменение значения по умолчанию параметра конфигурации testSourceDirectory
, который определен в Super POM.
например. для src/foobar/java
используйте
<build>
<testSourceDirectory>src/foobar/java</testSourceDirectory>
</build>
то вы можете просто запустить mvn test
для выполнения тестов.
Более сложное решение...
Если вы не хотите изменять конфигурацию pom.xml, вы можете указать параметр testSourceDirectory в командной строке следующим образом:
mvn -DtestSourceDirectory=src/foobar/java clean test
Но убедитесь, что ваши источники скомпилированы. В противном случае они не будут найдены и выполнены. В приведенном выше примере источники тестов не размещаются в месте, которое по умолчанию компилируется, поэтому мы все же должны изменить pom и добавить каталог в список источников тестирования с помощью buildhelper:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/foobar/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
Если вы не хотите изменять конфигурацию значения по умолчанию в папке и не хотите передавать новый каталог в командной строке, вам необходимо настроить путь в плагине maven-buildhelper и в maven-surefire-plugin в вашем pom.xml вот так:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-test-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<source>src/foobar/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<testSourceDirectory>src/foobar/java</testSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
Теперь снова простое использование mvn test
выполнит тест в нестандартном месте.