Где должны храниться интеграционные тесты при использовании Maven-failsafe-plugin?

должен ли я размещать свои интеграционные тесты под src/test с остальными моими модульными тестами и просто различать их по шаблону, такому как *Integr*Test, *ITTest, или они могут быть в src/it (как в случае разработки плагинов Maven и использования maven-invoker-plugin)?

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

2 ответов


первый Maven-fails-plugin запускается по умолчанию в другой фазе жизненного цикла (integration-test), как maven-surefire-plugin (test). Кроме того, вы можете настроить Maven-failsafe-plugin для запуска verify цель по post-integration-test тестовая фаза, если вы хотите проверить, не завершились ли интеграционные тесты. Это можно свободно установить.

есть один вопрос в моей голове. У вас есть 10 модулей, и теперь вы хотели бы иметь интеграционные тесты? К какому модулю они принадлежат? Так лучше чтобы иметь отдельный модуль, они не принадлежат ни одному из 10 модулей.

помимо этого maven-surefire-плагин уже настроен в жизненном цикле по умолчанию. Да, дополнительная цель была бы идеей, но это смутило бы пользователя, чтобы использовать одни и те же плагины в разных отношениях. Поэтому здесь важно разделение забот. Помимо всех конфигураций по умолчанию...Эти плагины имеют большую базу кода, но есть различия...

также то, что уже было упомянутый Tunaki является pre-integration-test, для установки таких вещей,как серверы и т. д. integration-test и такие вещи, как закрытие сервисы/серверы


вы правы, что src/it предназначен для использования при тестировании интеграций плагинов. Это упоминается в Стандартный Макет Каталога.

на maven-failsafe-plugin, по умолчанию, будет искать ваши интеграционные тесты внутри ${project.build.testSourceDirectory}, что то же самое как maven-surefire-plugin для модульных тестов. По умолчанию, это соответствует src/test/java. Интеграционные тесты различаются следующим образом:именования конвенция:

<includes>
  <include>**/IT*.java</include>
  <include>**/*IT.java</include>
  <include>**/*ITCase.java</include>
</includes>

который отличается от соглашение об именах юнит-тесты:

<includes>
  <include>**/Test*.java</include>
  <include>**/*Test.java</include>
  <include>**/*TestCase.java</include>
</includes>

поэтому, пока они будут находиться в одной исходной папке (src/test/java), разница в названиях их четко различает. Кроме того, это настройка по умолчанию, поэтому дополнительная конфигурация не потребуется.

что сказал, Вы можете иметь другие варианты:

  • поместите интеграционные тесты в другую исходную папку. Это потребует некоторой конфигурации, чтобы заставить его работать: вам нужно будет использовать build-helper-maven-plugin:add-test-source цель добавить пользовательскую папку в качестве тестовой исходной папки.
  • используйте другой модуль (если у вас есть многомодульный проект Maven), который будет содержать только интеграционные тесты.