Как запустить модульные тесты только один раз при запуске "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 перезапустит тесты с инструментами для своих собственных целей.

Другие вопросы по тегам