#java #maven #code-coverage #cobertura
#java #maven #покрытие кода #cobertura
Вопрос:
Я хочу сгенерировать и просмотреть отчет о покрытии для проекта Java-Maven.
Я добавил следующее в pom.xml
:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<formats>
<format>html</format>
</formats>
</configuration>
</plugin>
</plugins>
</reporting>
Когда я запускаю, mvn cobertura:cobertura
он успешно выполняется и сообщает консоли, что Cobertura Report generation was successful
но я не могу найти отчет.
Если я cd
в target/cobertura
нахожу файл с именем cobertura.ser
, но я понятия не имею, что с ним делать.
Редактировать: После повторного изучения документов, благодаря Andreas_D, я добавил <reporting>
тег, но получаю тот же результат.
Комментарии:
1. Используйте jacoco — это намного лучше, чем cobertura technikes.com/… Вы также получаете отчет в 3 форматах, а именно HTML, CSV и XML
2. @sakshamagarwal Ну, я задал этот вопрос в 2011 году, для протокола. В 2017 году я рад, что не имею дела с ерундой Java / Maven / XML.
3. Может быть, это поможет другим разработчикам. Надеюсь решить любую вашу ошибку в будущем. Спасибо
Ответ №1:
Это в разделе сборки:
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
</plugin>
...
</plugins>
...
</build>
И затем это в разделе отчетов:
<reporting>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<check></check>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
...
</plugins>
...
</reporting>
Выполнить mvn cobertura:cobertura
Затем найдите index.html внутри целевой папки /site/cobertura/.
Комментарии:
1. Надеюсь, это кому-то поможет. Я не возвращаюсь к этому старому вопросу.
2. Я думаю, что <plugin> должен быть заключен в элемент <plugins> . Если да, предложите изменить ответ, поскольку он не работает
3. Да, Питер.мюррей.rust, вы правы, и у меня создалось впечатление, что разработчики не будут просто копировать и вставлять все целиком, а разместят необходимый код в нужном месте. Скорректировал ответ.
Ответ №2:
Взгляните на документацию плагина, там есть пример. Уверен, что вам нужно добавить <reporting>
элемент, чтобы фактически создать отчет.
Комментарии:
1. Хороший улов, но я все равно получаю тот же результат. Я обновил вопрос.
2. @FarmBoy — вам нужно добавить плагин cobertura в
<build>
раздел (для выполнения cobertura) и в<reporting>
раздел (для создания отчета. И вам, возможно, придется добавитьsite
цель (mvn cobertura:cobertura site
) для фактического создания (html) сайта3. Хм,
site
цель создает проблему зависимости. Он не может найтиorg.apache.maven.doxia:doxia-core:jar:1.0-alpha-11
. В нашем репозитории естьalpha-10
. Зачем это вообще нужно?4. @FarmBoy — вам придется решить проблемы с зависимостями. «Запустите» pom на компьютере, подключенном к Интернету, затем импортируйте новый локальный репозиторий с этого компьютера в свой репозиторий (похоже, ваш отключен от Интернета)
5. Я вынужден просматривать внутренний репозиторий моей компании, и я понимаю, что это моя проблема. Я просто сбит с толку, почему добавление
site
цели приведет к созданию новых зависимостей.
Ответ №3:
Я только что попробовал здесь, в моем проекте, вы также можете сделать следующее:
а) запустите mvn cobertura:cobertura
б) он должен сгенерировать папку с именем ‘site’
в) вы можете открыть index.html (внутри папки site / sobertura) в любом браузере и проверить результаты покрытия.
Ответ №4:
Если ничего не работает — попробуйте это http://technikes.com/how-to-generate-code-coverage-report-in-java-jacoco-graphical-report / вы можете получить отчет о покрытии кода в формате html и xml
Это удивительно, поскольку я публикую свой отчет в html и xml
Комментарии:
1. Этот вопрос слишком устарел для меня, чтобы у меня был шанс воспроизвести проблему, поэтому я не буду голосовать за новые ответы.
2. Но этот ответ не для увеличения моего голоса. Может быть, это поможет другим разработчикам. Надеюсь решить любую вашу ошибку в будущем. Спасибо
3. Этот ответ на самом деле не затрагивает вопрос о cobertura, он предоставляет способ сделать это с помощью другого плагина.