Подтвердить что ты не робот

Есть ли достойный плагин для отчета в формате HTML Junit для Maven?

Я нахожу, что плагин surefire-report очень непригоден для моего рабочего стиля. Я очищаю проект все время, и я не хочу тратить 5 минут, чтобы перестроить весь сайт каждый раз, когда я хочу посмотреть отчет об испытаниях в своем браузере.

Если я набираю mvn surefire-report:report-only, сгенерированный отчет слишком уродливый и едва читаемый.

Я ищу что-то вроде задачи ant JUnitReport. Есть ли там уже доступный?

4b9b3361

Ответ 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.