Как запустить модульные тесты только один раз при запуске "maven clean install" и Sonar? - PullRequest
6 голосов
/ 20 сентября 2011

У меня была следующая конфигурация для моей работы в Jenkins: Сначала очистите и соберите проект maven, затем запустите модульные тесты и статический анализ: clean install sonar:sonar Проблема состояла в том, что install и sonar:sonar каждый выполнял модульные тесты, которые эффективно удваивали время сборки.

Я исправил это, изменив clean install sonar:sonar на clean install -DskipTests и запустив Sonar, используя плагин сонара Jenkins. Теперь юнит-тесты запускались только один раз, и гидролокатор показал результаты, но Дженкинс больше не знал о тестах.

Полагаю, что Дженкинс просматривает папку с верными отчетами только после сборки, а не после сонара (что является действием после сборки).

Ответы [ 2 ]

11 голосов
/ 20 сентября 2011

Вы можете просто запустить clean install -DskipTests сначала, а затем добавить второй шаг сборки maven sonar:sonar.Тесты (и полный анализ гидролокатора) будут выполняться на этапе сборки, и после этого Дженкинс может получить достоверные результаты.

2 голосов
/ 20 сентября 2011

Как вы сказали, Sonar - это шаг после компиляции. Sonar требует, чтобы сборка была завершена и прошла все свои тесты, прежде чем она сможет работать, иначе вещи, которые она не имеет никакого смысла.

Сонар запускает тесты с приборами (cobertura, если я правильно помню), что дает покрытие кода для тестов.

Итак, вам нужно выполнить установку (или хотя бы скомпилировать и протестировать) перед запуском Sonar, а затем Sonar перезапустит тесты с инструментами для своих собственных целей.

...