У меня есть многомодульный проект maven2, и в каждом из моих дочерних модулей у меня есть тесты JUnit, которые названы Test.java
и Integration.java
для модульных тестов и интеграционных тестов соответственно. Когда я выполню:
mvn test
Все тесты JUnit *Test.java
в дочерних модулях выполняются. Когда я выполню
mvn test -Dtest=**/*Integration
ни один из Integration.java
тестов не выполняется в дочерних модулях.
Мне кажется, что это одна и та же команда, но та, которая с -Dtest = / * Integration ** не работает, отображает 0 тестов, выполняемых на родительском уровне, которых нет.
Ответы:
Вы можете настроить Maven's Surefire для отдельного запуска модульных и интеграционных тестов. На стандартном этапе модульного тестирования вы запускаете все, что не соответствует шаблону, соответствует интеграционному тесту. Затем вы создаете второй этап тестирования, который запускает только интеграционные тесты.
Вот пример:
источник
Сборки Жизненный цикл Maven теперь включает в себя этап «Интеграция-тест» для выполнения тестов интеграции, которые работают отдельно от единичных испытаний , запущенным в фазе «тест». Он запускается после «package», поэтому, если вы запустите «mvn verify», «mvn install» или «mvn deploy», интеграционные тесты будут выполняться по пути.
По умолчанию интеграции тест проходит тестовые классы с именами
**/IT*.java
,**/*IT.java
и**/*ITCase.java
, но это может быть настроено.Для получения дополнительной информации о том , как подключить это все вверх, см Отказоустойчивого плагина , на Failsafe странице использования (не правильно связаны с предыдущей страницы , когда я пишу это), а также проверить этот блог Sonatype .
источник
mvn integration-test
также запускаются модульные тесты (с использованием surefire), ноmvn failsafe:integration-test
выполняются только отказоустойчивые интеграционные тесты.package
фазы, это значит, что я должен поместить весь свой исходный код Java в Javasrc/main/java
вместоsrc/test/java
правильного?Я сделал именно то, что вы хотите сделать, и это прекрасно работает. Модульные тесты «* Tests» всегда выполняются, а «* IntegrationTests» запускаются только тогда, когда вы выполняете проверку mvn или установку mvn. Вот это фрагмент из моего ПОМа. serg10 почти правильно понял ... но не совсем.
Удачи!
источник
clean compile integration-test -Dmaven.test.failure.ignore=false
Вы можете очень легко разделить их, используя категории JUnit и Maven.
Это очень и очень кратко показано ниже при тестировании модуля разделения и интеграции.
Определить интерфейс маркера
Первым шагом в группировке теста с использованием категорий является создание интерфейса маркера.Этот интерфейс будет использоваться для пометки всех тестов, которые вы хотите запустить, как интеграционных тестов.
Отметьте свои тестовые занятия
Добавьте аннотацию категории в начало вашего тестового класса. Требуется имя вашего нового интерфейса.
Настройка Maven модульных тестов
Прелесть этого решения в том, что ничего не изменится с точки зрения модульного тестирования.Мы просто добавляем некоторую конфигурацию в плагин maven surefire, чтобы он игнорировал любые интеграционные тесты.
Когда вы это сделаете
mvn clean test
, будут выполняться только ваши немаркированные юнит-тесты.Настроить интеграционные тесты Maven
Опять же, конфигурация для этого очень проста.Мы используем стандартный отказоустойчивый плагин и настраиваем его для запуска только интеграционных тестов.
Конфигурация использует стандартную цель выполнения для запуска отказоустойчивого плагина во время фазы тестирования интеграции сборки.
Теперь вы можете сделать
mvn clean install
.На этот раз, а также при выполнении модульных тестов интеграционные тесты выполняются на этапе интеграционных тестов.
источник
Вы должны попробовать использовать maven failsafe плагин . Вы можете сказать, чтобы включить определенный набор тестов.
источник
maven-failsafe-plugin
отправился на кладбище плагиновfailsafe
плагин был перемещен вmaven-failsafe-plugin
. Похоже, чтоmaven-failsafe-plugin
он все еще активен (документы были в последний раз отправлены в марте 2014 года).По умолчанию Maven запускает только те тесты, в которых Test находится где-то в имени класса.
Переименуйте в IntegrationTest, и это, вероятно, будет работать.
В качестве альтернативы вы можете изменить конфигурацию Maven для включения этого файла, но, вероятно, проще и лучше просто назвать ваши тесты SomethingTest.
Из включений и исключений тестов :
источник
Еще один способ запуска интеграционных тестов с Maven - использовать функцию профиля:
Запуск mvn clean install запустит сборку по умолчанию. Как указано выше, интеграционные тесты будут игнорироваться. Запуск mvn clean install -P интеграционные тесты будет включать интеграционные тесты (я также игнорирую свои промежуточные интеграционные тесты). Кроме того, у меня есть CI-сервер, который каждую ночь выполняет мои интеграционные тесты, и для этого я запускаю команду «mvn test -P интеграционные тесты» .
источник
Вы можете следовать документации maven, чтобы запускать модульные тесты со сборкой и запускать интеграционные тесты отдельно.
Это позволит вам работать со всеми интеграционными тестами, отключенными по умолчанию. Чтобы запустить их, вы используете эту команду:
источник
Вы должны использовать плагин maven surefire для запуска модульных тестов и плагин maven failsafe для запуска интеграционных тестов.
Пожалуйста, следуйте ниже, если вы хотите переключить выполнение этих тестов, используя флаги.
Конфигурация Maven
Таким образом, тесты будут пропущены или переключены в соответствии с приведенными ниже правилами флага:
Тесты могут быть пропущены по нижеуказанным флагам:
-DskipTests
пропускает как модульные, так и интеграционные тесты-DskipUnitTests
пропускает юнит-тесты, но выполняет интеграционные тесты-DskipIntegrationTests
пропускает интеграционные тесты, но выполняет модульные тестыЗапуск тестов
Запустите ниже, чтобы выполнить только юнит-тесты
Вы можете выполнить приведенную ниже команду для запуска тестов (как модульных, так и интеграционных)
Чтобы запустить только интеграционные тесты, следуйте
Или пропустите юнит-тесты
Кроме того, чтобы пропустить интеграционные тесты во время
mvn install
, следуйтеВы можете пропустить все тесты, используя
источник