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

StackOverflow https://stackoverflow.com/questions/412717

Вопрос

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

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

Вот конфигурация плагина в элементе сборки моего mvn test:

  <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>

Есть идеи? <=> запускает все модульные тесты, как и ожидалось (кроме группы <=>), но второй тестовый прогон просто пишет:

  

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

Результат <=> соответствует ожидаемому, тесты выполняются, а группа <=> игнорируется.

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top