Как использовать плагин Maven Surefire с разными группами для тестирования и интеграции-теста?

Я хочу использовать testng с Подключаемый модуль Surefire из Maven. Идея состоит в том, чтобы пометить некоторые тесты группой integrationTest и дважды запустить подключаемый модуль: для цели test, исключая группу integrationTest, и для цели integration-test, включая только группу integrationTest.

Я нашел несколько материалов для запуска подключаемого модуля для обеих целей и того, что работает, но группа для второго запуска не работает (тест не выполняется).

Вот конфигурация подключаемого модуля в элементе сборки моего pom.xml:

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
      <excludedGroups>integrationTest</excludedGroups>
      <reportFormat>brief</reportFormat>
      <trimStackTrace>true</trimStackTrace>
      <useFile>false</useFile>
    </configuration>
    <executions>
      <execution>
        <id>integration-test</id>
        <phase>integration-test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <groups>integrationTest</groups>
          <excludedGroups/>
          <reportsDirectory>${project.build.directory}/surefire-reports/integration</reportsDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

Любая идея? mvn integration-test выполняет все модульные тесты, как ожидалось (за исключением группы integrationTest), но второй тестовый запуск просто записывает:

Запуск TestSuite
Выполненных тестов: 0, Ошибок: 0, Ошибок: 0, Пропущенных: 0, Истекшее время: 0,562 секунды

Результат mvn test ожидаемый, тесты выполняются, а группа integrationTest игнорируется.


person Arne Burmeister    schedule 05.01.2009    source источник


Ответы (2)


Я понял - раздражающая реализация конфигурации!

<excludedGroups/> не отменяет <excludedGroups>integrationTest</excludedGroups>. Вместо этого вам нужно указать любую (неизвестную) группу, например <excludedGroups>none</excludedGroups>.

person Arne Burmeister    schedule 06.01.2009
comment
excludedGroups не работает с TestNG 5.14.1 - используйте вместо этого 5.14.2! - person Arne Burmeister; 16.11.2010
comment
С Surefire 2.18.1 и JUnit 4.10 я получаю сообщение об ошибке [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (integration-test) on project example-project: Execution integration-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: There was an error in the forked process [ERROR] java.lang.RuntimeException: Unable to load category: none. Кажется, группа, которую вы замещаете, должна, по крайней мере, существовать, даже если она нигде не используется. Я делаю это с public interface SystemTest extends IntegrationTest и исключаю эту категорию. - person orlade; 09.01.2015

Failsafe plugin - лучший способ сделать это (он может не были доступны на момент публикации этого вопроса). Он добавляет фазу интеграции-тестирования в жизненный цикл сборки. Он позволяет запускать действия по настройке и демонтажу до и после тестов, что полезно, например, для управления встроенным контейнером.

person Kief    schedule 12.03.2011
comment
Возможно, вы правы: поисковая система Maven Central датирует самый старый артефакт maven-failsafe-plugin 12 января 2010 года. С тех пор, я думаю, это стало предпочтительным решением проблемы. - person Simon Hellinger; 31.10.2012