Для меня работала следующая команда:
mvn clean install -DskipITs "-Dtest=!MyTestClass, !**/*IT.java" test
Я все еще изучаю Java, но вот что я думаю произошло в моем случае.
Есть два плагина, относящихся к тестированию в Java (вероятно, их гораздо больше, но эти два имеют отношение к моей проблеме): один называется «maven-failsafe-plugin», а другой - «maven-surefire-plugin».Как отметили @hovanessyan и другие, maven-failsafe-plugin обычно запускает интеграционные тесты, в то время как maven-surefire-plugin обычно запускает модульные тесты ( ссылка на Maven docs ).
В моем случаеКогда я запускаю команду mvn clean install -DskipITs -Dtest=!MyTestClass test
, при дальнейшем копании в журналах интеграционные тесты не пройдут, и я получу следующее дополнительное скрытое сообщение об ошибке:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test)
Интеграционные тесты для проектанаходится в каталоге с именем integrationtests
и названы в соответствии с соглашением «MyIntegrationTestIT.java».Что в итоге привело меня на правильный путь, так это: Документы Surefire .Эти документы описывают «тестовый» аргумент, который вы можете передать с помощью команды Maven.
Мне кажется, что, когда я передал аргумент -Dtest=!MyTestClass
, это как если бы он дал плагину Surefire команду «не делать».запустите MyTestClass, но запустите любой другой тестовый файл. "Между тем, аргумент -DskipITs
дал указание плагину Failsafe пропускать интеграционные тесты (что он делал все время).Когда я явно вызвал тестовые файлы, которые я не не хотел запускать, в форме "-Dtest=!MyTestClass, !**/*IT.java"
, Surefire точно понял, что я хотел сделать.Плагин Surefire выполнял все тесты, за исключением MyTestClass и интеграционных тестов, а плагин Failsafe пропускал интеграционные тесты.
Я не до конца понимаю, почему в моем случае плагин Surefire выполнял интеграциютесты на первом месте.Может быть, это связано с некоторыми настройками конфигурации в кодовой базе, с которой я работаю, или с соглашением об именах файлов тестов интеграции, или с некоторыми аннотациями (я все еще много узнаю об этих вещах).Я уверен, что этот ответ может быть отредактирован, чтобы включить еще более полезную информацию или контекст, которого у меня еще нет.В любом случае, надеюсь, что эти знания будут полезны для некоторых других людей, испытывающих эту проблему.
Наконец, это очень помогло при отладке для запуска команды mvn help:effective-pom
и передачи -X
вместе с моей командой mvn clean install test
.