Я нахожу surefire-report
плагин, очень неподходящий к моему рабочему стилю. Я чищу проект все время, и я не хочу проводить 5 минут для восстановления целого сайта каждый раз, когда я хочу посмотреть на отчет о тестировании в своем браузере.
Если я ввожу mvn surefire-report:report-only
, сгенерированный отчет слишком ужасен и едва читаем.
То, что я ищу, является чем-то как задача JUnitReport муравья. Действительно ли там каждый уже доступен там?
Действительно, генерировать весь сайт при каждой сборке - явно не вариант. Но проблема в том, что 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>
Update: Моя первоначальная идея состояла в том, чтобы запустить плагин Maven AntRun "по требованию" для генерации отчетов... но это не то, что я опубликовал, я привязал его к test
фазе.... Но я не подумал о случае неудачных тестов (это остановит сборку и не позволит выполнить плагин AntRun). Итак, либо:
Не привязывайте плагин AntRun к фазе test
, перенесите конфигурацию за пределы execution
и вызывайте mvn antrun:run
в командной строке для генерации отчетов, когда это необходимо.
или используйте опцию testFailureIgnore
тестового моджо и установите ее в true в конфигурации плагина surefire:
org.apache.maven.plugins
maven-surefire-plugin
<конфигурация>
true
или установить это выражение из командной строки с помощью параметра -D:
$ mvn test -Dmaven.test.failure.ignore=true
Я думаю, что вариант #1 является лучшим вариантом, вы не обязательно хотите генерировать отчеты (особенно когда тест проходит), а их систематическая генерация может замедлить сборку в долгосрочной перспективе. Я бы генерировал их "по требованию".
Спасибо за Паскаль, я нашел улучшенное решение, чтобы делать то, что я хочу делать:
<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, и что лучше всего. Однако я до сих пор не нашел способ сгенерировать отчет о тестировании, когда тесты не проходят. Как мне это сделать?
Вы можете установить -Dmaven.test.failure.ignore=true
для генерации отчета о тестировании при неудачных тестах.