Бегущие юниты и кобертура с maven
В нашем проекте мы запускаем как junits, так и cobertura, используя maven. Проблема, с которой я сталкиваюсь, заключается в том, что
- тестовые примеры junit запускаются дважды, один раз перед процессом создания банки, а затем снова для создания отчетов о покрытии cobertura. При запуске cobertura и junits с ant мы запускаем юниты только один раз, так как кобертура работает вместе с юнитами. Есть ли способ сконфигурировать вышеуказанный случай с maven. Я знаю, что мы можем использовать свойство maven.test.skip для пропуска юнитов. Но когда я это делаю, я не могу видеть отчеты junit xml & html.
- Кроме того, в maven, как настроить junits для запуска в пакетном или параллельном?
Благодарю вас!
Ответы
Ответ 1
Пока я больше не могу найти точную страницу, я недавно прочитал дискуссию о том, почему запуск тестов дважды считается хорошей идеей. Приведенные ключевые вопросы касались влияния изменения кода байта Cobertura на точность ваших тестов. В некоторых случаях время выполнения кода может быть важным, изменение байтового кода может привести к провалу тестов, которые не выполняются в JUnit при запуске только в Cobertura и наоборот. По этой причине было рекомендовано, чтобы тесты выполнялись дважды. Большинство приведенных примеров были связаны с многопоточным поведением, но я полагаю, что могут быть другие случаи, когда изменение байтового кода может вызвать проблемы в ваших тестах. Испытания, выполняемые в обоих направлениях, дают вам базовые результаты, а также уменьшают шансы отправить вас на охоту на диких гусей, если Cobertura фактически изменяет успех теста.
Ответ 2
Попробуйте добавить cobertura в качестве ссылки на область компиляции. И разместите соответствующие части вашего pom.
Ответ 3
Это происходит потому, что для выполнения отчета требуется выполнение теста, чтобы он мог создавать отчеты. Если на плагине сайта была цель "только для сайта", которая не имела аннотации @requiresDependencyResolution test
, она могла быть привязана к фазе проекта prepare-package
, и ваши отчеты будут генерироваться без двух тестов.
К сожалению, похоже, в настоящее время нет такой цели (см. мой question по этому вопросу).
См. Мой ответ на вопрос для получения подробных сведений об обходном пути.