Запуск тестов JUnit в Maven без создания и копирования файлов
У меня есть большой проект Maven, в котором есть несколько модулей. Когда я хочу запустить JUnit-тест из одного модуля, я запускаю 'mvn -Dtest = NameOfTest test' в каталоге, который содержит все модули. Когда я запускаю эту команду, Maven проходит через каждый модуль и пытается скомпилировать его (хотя он уже скомпилирован), который включает в себя копирование кучи файлов и добавление к общему времени теста. Кажется, что команда "test" для плагина Maven surefire выполняет все шаги до теста. Мне было интересно, есть ли способ выполнить только тестовый шаг и не беспокоить все попытки компиляции и копирования файлов.
Вот несколько результатов до начала теста:
[INFO]
[INFO] --- build-helper-maven-plugin:1.5:add-test-source (add-test-source) @ module1 ---
[INFO] Test Source directory: <directory in module1 with some generated sources> added.
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ module1 ---
[debug] execute contextualize
[INFO] Copying 108 resources
[INFO] Copying 1113 resources
[INFO] Copying 1 resource
[INFO]
Он повторяет это для каждого из других модулей. Все сказали, что это занимает минуту или две, прежде чем он начнет тест. Кто-нибудь знает, как запустить тест, не беспокоясь обо всем компиляции заранее? Пожалуйста, дайте мне знать, если еще есть информация, которую я должен предоставить.
Ответы
Ответ 1
Если вы хотите выполнить только этап тестирования жизненного цикла без выполнения всех предыдущих этапов, вы также можете назвать цель, связанную с этапом тестирования:
mvn surefire:test
или если вы хотите запустить только один тест
mvn -Dtest=NameOfTest surefire:test
Ответ 2
Если вы просто хотите пропустить компиляцию тестов из строки cmd, используйте -Dmaven.test.skip=true
.
Следует также отметить, что, хотя maven.test.skip
будет НЕ компилировать любые тесты, он, однако, выполнит любые скомпилированные тесты, которые пробились в <testOutputDirectory>
.
На основе документации для skip
из плагина maven-resources копирование тестовых ресурсов следует пропустить с помощью maven.test.skip
arg выше.
Установите значение 'true' для обхода копирования тестовых ресурсов. Его использование НЕ РЕКОМЕНДУЕТСЯ, но довольно удобно. Свойство пользователя: maven.test.skip.
Ответ 3
Что случилось с простое тестирование теста внутри модуля, в котором находится тест? Таким образом, Maven не будет пытаться создавать другие модули, которые вас не интересуют.