Как запустить модульные тесты только один раз при запуске "maven clean install" и Sonar?
У меня была следующая конфигурация для моей работы в Jenkins: сначала очистите и соберите проект maven, затем запустите модульные тесты и статический анализ: clean install sonar:sonar
Проблема заключалась в том, что install
а также sonar:sonar
каждый запускал модульные тесты, которые удваивали время сборки.
Я исправил это, изменив clean install sonar:sonar
в clean install -DskipTests
и запуск сонара с использованием плагин сонара Дженкинс. Теперь юнит-тесты запускались только один раз, и гидролокатор показал результаты, но Дженкинс больше не знал о тестах.
Я предполагаю, что Дженкинс только просматривает папку с верными отчетами после сборки, а не после сонара (что является действием после сборки).
2 ответа
Вы могли бы просто бежать clean install -DskipTests
сначала, а затем добавить второй шаг сборки Maven sonar:sonar
, Тесты (и полный анализ гидролокатора) будут выполняться на этапе сборки, и после этого Дженкинс сможет получить достоверные результаты.
Как вы сказали, Sonar - это шаг после компиляции. Sonar требует, чтобы сборка была завершена и прошла все свои тесты, прежде чем она сможет работать, иначе вещи, которые она не имеет никакого смысла.
Сонар запускает тесты с инструментами (cobertura, если я правильно помню), что дает покрытие кода для тестов.
Итак, вам нужно выполнить установку (или, по крайней мере, скомпилировать и протестировать) перед запуском Sonar, а затем Sonar перезапустит тесты с инструментами для своих собственных целей.