Есть ли достойный плагин для отчета в формате HTML Junit для Maven?
Я нахожу, что плагин surefire-report
очень непригоден для моего рабочего стиля. Я очищаю проект все время, и я не хочу тратить 5 минут, чтобы перестроить весь сайт каждый раз, когда я хочу посмотреть отчет об испытаниях в своем браузере.
Если я набираю mvn surefire-report:report-only
, сгенерированный отчет слишком уродливый и едва читаемый.
Я ищу что-то вроде задачи ant JUnitReport. Есть ли там уже доступный?
Ответы
Ответ 1
Действительно, создание всего сайта в каждой сборке явно не является вариантом. Но проблема в том, что mvn surefire-report:report-only
не создает файлы css/*.css, а значит, и уродливый результат. Это зарегистрировано в SUREFIRE-616 (не означает, что что-то произойдет). Лично я не очень часто использую HTML-отчеты, поэтому я могу жить с этим, но это не очень хороший ответ, поэтому это обходное решение, основанное на задаче ant (* sigh *):
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>
</plugin>
Обновление:. Моя первоначальная идея состояла в том, чтобы запустить плагин Maven AntRun "по запросу" для создания отчетов... но это не то, что я написал, я привязал его к фазе test
... Но я не думал о случае неудачных тестов (это остановит сборку и предотвратит выполнение плагина AntRun). Итак, либо:
-
Не привязывайте плагин AntRun к фазе test
, переместите конфигурацию вне execution
и вызовите mvn antrun:run
в командной строке, чтобы генерировать отчеты при необходимости.
-
или используйте параметр testFailureIgnore
тестового mojo и установите его в true в конфигурации плагина surefire:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
-
или установите это выражение из командной строки с помощью параметра -D:
$ mvn test -Dmaven.test.failure.ignore=true
Я думаю, что вариант №1 - лучший вариант, вы не обязательно хотите генерировать отчеты (особенно когда тест проходит) и генерировать их систематически может замедлить сборку в долгосрочной перспективе. Я бы сгенерировал их "по требованию".
Ответ 2
Это то, что я делаю:
# Run tests and generate .xml reports
mvn test
# Convert .xml reports into .html report, but without the CSS or images
mvn surefire-report:report-only
# Put the CSS and images where they need to be without the rest of the
# time-consuming stuff
mvn site -DgenerateReports=false
перейдите в файл target/site/surefire-report.html для отчета.
После того, как тесты пройдут, остальные два из них работают примерно на 3,5 секунды.
Надеюсь, что это поможет. Наслаждайтесь!
Ответ 3
Спасибо за Pascal, я нашел улучшенное решение для выполнения того, что хочу:
<plugin>
<!-- Extended Maven antrun plugin -->
<!-- https://maven-antrun-extended-plugin.dev.java.net/ -->
<groupId>org.jvnet.maven-antrun-extended-plugin</groupId>
<artifactId>maven-antrun-extended-plugin</artifactId>
<executions>
<execution>
<id>test-reports</id>
<phase>test</phase>
<configuration>
<tasks>
<junitreport todir="target/surefire-reports">
<fileset dir="target/surefire-reports">
<include name="**/*.xml"/>
</fileset>
<report format="noframes" todir="target/surefire-reports"/>
</junitreport>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-junit</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-trax</artifactId>
<version>1.8.0</version>
</dependency>
</dependencies>
</plugin>
В этой версии используется более новая версия ant и лучше всего. Тем не менее, я все еще не нашел способ генерировать тестовый отчет, когда тесты терпят неудачу. Как мне это сделать?
Ответ 4
Вот как я это сделал, используя цель site maven-surefire: report:
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.16</version>
<configuration>
<showSuccess>false</showSuccess>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
<configuration>
<outputDirectory>${basedir}/target/surefire-reports</outputDirectory>
</configuration>
</plugin>
</plugins>
</reporting>
</project>
Ответ 5
Вы можете установить -Dmaven.test.failure.ignore=true
, чтобы сгенерировать отчет об испытаниях, когда тесты не выполняются.
Ответ 6
Создайте новую конфигурацию запуска maven и с помощью цели = >
surefire-report:report site -DgenerateReports=false
Это может помочь вам улучшить представление отчета с помощью css.
Ответ 7
Запустите команду
mvn clean install surefire-report:report
Отчет можно найти в приведенном ниже каталоге
{basedir}/target/site/surefire-report.html
Подробнее см. ниже ссылку
http://maven.apache.org/surefire/maven-surefire-report-plugin/usage.html