Подтвердить что ты не робот

Как запустить UnitTests в maven, который находится в папке src/test-integration/java

Когда мы говорим тест mvn, обычным способом является то, что maven будет искать тесты, присутствующие в папке src/test/java. Но у меня есть мои тесты в другой папке, а именно src/integration-test/java. Как запустить тесты, присутствующие в этой папке, через командную строку?

Спасибо заранее,

Манодж.

4b9b3361

Ответ 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 выполнит тест в нестандартном месте.