Как использовать плагин Maven Surefire с различными группами для тестирования и интеграции-тестирования?
-
03-07-2019 - |
Вопрос
Я хочу использовать 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 - лучший способ сделать это (возможно, он не был доступен, когда вы разместили этот вопрос). Он добавляет этап тестирования интеграции в жизненный цикл сборки. Он позволяет выполнять действия по настройке и демонтажу до и после тестов, что полезно, например, для управления встроенным контейнером.