Как настроить pom для запуска тестов, упакованных в банку?

У меня есть процесс сборки maven, который публикует исполняемые баночки и их тесты для Nexus. У меня есть другой процесс сборки maven, который должен получить доступ к этим банкам (исполняемый + тест) и запустить тесты.

Как мне это сделать? До сих пор мне удалось это сделать только в том случае, если jar взорвался в файлы классов. Я новичок в maven и полностью потерял в документации.

Ответы

Ответ 1

Surefire и отказоустойчивые в настоящее время не поддерживают текущие тесты из флага.

Это в значительной степени случай, когда вы не можете идентифицировать тесты.

Существует два способа запуска тестов.

  • Используйте тестовый набор, в котором перечислены все тесты из тестовой банки. Поскольку тестовый набор будет находиться в src/test/java (более корректно будет скомпилирован в целевые/тестовые классы), которые будут собраны, и все тесты в пакете будут выполняться Surefire/failafe (при условии, что имя класса пакета соответствует правилу включения: начинается или заканчивается с помощью теста)

  • Использовать цель распаковки зависимостей зависимостей maven, чтобы распаковать тестовую банку в целевые/тестовые классы (это крики взлома, но работает довольно хорошо)

Основная проблема с первым вариантом заключается в том, что вы не можете легко запустить только один тест из пакета, и вам нужно назвать каждый тест из тестового баннера

По этой причине я склоняюсь к варианту 2... Существует дополнительное преимущество в том, что вариант 2 не означает написание кода для ограничения ограничений в плагине инструментов построения... Чем меньше вы блокируете себя в конкретной сборке инструмент, лучше IMHO

Ответ 2

Это на самом деле отлично работает с новыми исправлениями и защищенными плагинами, см. связанные вопросы:

Таким образом, вам больше не нужно распаковывать банку, вы просто предоставляете идентификатор группы и артефакта для зависимостей для сканирования (это работает как с зависимостями "main jar", так и с зависимостями "test-jar" )/p >

Ответ 3

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