2014-09-24 2 views
0

Ранее на этой неделе у меня было много трудностей Откат свойства проекта, что изменения Clover, когда он работает (так что это не будет мешать последующих плагинов):Как сделать тесты интеграции с помощью Clover?

How to revert Maven project.build variables after Clover plugin finishes?

Я решил эту проблему за счет экономии эти свойства, когда Maven запускает и использует сохраненные переменные в моих плагинах вместо тех, которые Clover изменяет.

Теперь, когда я могу разместить файл WAR без инструментов, на этапе предварительной интеграции, мои тесты могут успешно выполняться и проходить (ранее я не смог запустить приложение из инструментального файла WAR так как Clover не был на пути класса release).

К сожалению, я обнаружил, что жизненный цикл разветвленного клевера продолжается за пределами испытательной фазы. После того, как мои тесты пройдут, а встроенный экземпляр Tomcat отключится, исходный жизненный цикл снова запускает плагин Tomcat7, запускает сервер и повторно запускает тест.

Я могу жить с ним, выполняя мои юнит-тесты в два раза (это может уловить ошибки на кромке, которые появляются только с или без инструментов для клевера), но выполнение моих тестов интеграции в два раза совершенно необязательно. Эти тесты не затрагивают производственный код (они используют Selenium для автоматизации тестирования UI против него в браузере). Как уже упоминалось, инструмент WAR WAR не работал в любом случае, поэтому его больше нет, когда выполняются тесты интеграции. Нет абсолютно никакой причины, чтобы эти тесты снова запускались.

Как я могу сообщить Clover о завершении жизненного цикла forked после завершения фазы тестирования, чтобы тесты интеграции выполнялись только один раз? В настоящее время я могу включить его только для всего жизненного цикла или вообще не использовать.

Обновление: Я обнаружил, что даже если я отключу плагин Clover, перейдя в -Dmaven.clover.skip = true, он все равно будет вилка жизненного цикла. Единственный способ, который я нашел, чтобы предотвратить это, - полностью закомментировать плагин Clover, чтобы у него не было возможности развернуть жизненный цикл, прежде чем пропустить инструментарий.

ответ

0

Clover имеет три цели, которые могут быть использованы для кода приборов:

clover2: инструмент вилки параллельно строить жизненный цикл до «установки» фазы - это причина, почему вы видите ваши сборки и испытания работы дважды - один раз для стандартной сборки и один раз для сборки с помощью Clover. Инструмент clover2: производит также два набора артефактов - нормальных (например, myapp-1.0.jar) и «cloverized» (например, myapp-1.0-clover.jar).

Существует также аналогичная цель с именем clover2: instrument-test - он также вилки сборки, но до фазы «теста». Это может быть полезно, если вы не хотите запускать интеграционные тесты или хотите избежать установки артефактов в локальном кэше Maven.

Если вам не нравится эта игра, используйте вместо этого цель clover2: setup. Он будет работать с инструментами исходного кода в жизненном цикле жизни Maven по умолчанию. Это означает, что и сборка, и тесты выполняются только один раз.Единственное, что вы должны иметь в виду, используя clover2: setup - это то, что сгенерированные артефакты (JARs, WARs) будут содержать инструментальные классы, и, возможно, вы не будете называть «mvn install» или «mvn deploy» вместе с «clover2: setup '- во избежание нажатия на «клеверные» JAR-файлы в ваши репозитории :-)

Если вы выполняете тесты на CI, я предлагаю настроить отдельный план сборки с помощью «clover2: setup». Не стесняйтесь обращаться ко мне по адресу support.atlassian.com, если у вас есть какие-либо вопросы.

+0

Мы по-прежнему хотели бы раскошелиться на жизненный цикл и дважды запустить тесты устройства (согласно http://stackoverflow.com/questions/15795840/maven-runs-unit-tests-twice-with-clover-plugin) , Однако, используя clover2: test-test (как вы предложили на http://stackoverflow.com/questions/25984565/how-to-revert-maven-project-build-variables-after-clover-plugin-finishes) на самом деле решает мою проблему и сохраняет тесты интеграции только один раз (по желанию). Не могли бы вы обновить этот ответ, чтобы упомянуть об этом, чтобы я мог его принять? –

Смежные вопросы