Есть ли достойный HTML-плагин Junit для Maven? - PullRequest
32 голосов
/ 17 мая 2010

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

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

Я ищу что-то вроде задачи Ant JUnitReport. Уже есть один?

Ответы [ 7 ]

51 голосов
/ 30 мая 2014

Вот что я делаю:

# 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 секунды.

Надеюсь, это поможет. Наслаждайтесь!

27 голосов
/ 17 мая 2010

Действительно, создание целого сайта при каждой сборке явно не вариант. Но проблема в том, что 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). Итак, либо:

  1. Не привязывайте плагин AntRun к фазе test, переместите конфигурацию за пределы execution и вызовите mvn antrun:run в командной строке, чтобы при необходимости создавать отчеты.

  2. или используйте опцию testFailureIgnore теста mojo и установите его в значение true в конфигурации плагина surefire:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <testFailureIgnore>true</testFailureIgnore>
      </configuration>
    </plugin>
    
  3. или задайте это выражение из командной строки с помощью параметра -D:

    $ mvn test -Dmaven.test.failure.ignore=true
    

Я думаю, что вариант № 1 - лучший вариант, вам не обязательно создавать отчеты (особенно когда тест проходит), а систематическая их генерация может замедлить сборку в долгосрочной перспективе. Я генерировал бы их «по требованию».

4 голосов
/ 19 мая 2010

Спасибо за Паскаль, я нашел улучшенное решение для того, что я хочу сделать:

<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 и лучше всего. Тем не менее, я все еще не нашел способ создания отчета о тестировании, когда тесты не пройдены. Как мне это сделать?

2 голосов
/ 06 июля 2016

Создать новую конфигурацию Maven Run с целью =>

surefire-report:report site -DgenerateReports=false

Это может помочь вам лучше просматривать отчет с помощью css.

2 голосов
/ 22 августа 2013

Вот как я это сделал, используя цель 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>
2 голосов
/ 25 июня 2010

Вы можете установить -Dmaven.test.failure.ignore=true для генерации отчета о тестировании при неудачном тестировании.

0 голосов
/ 30 марта 2017

Запустите приведенную ниже команду

mvn clean install surefire-report:report  

Вы можете найти отчет в расположении ниже

{basedir}/target/site/surefire-report.html

Для получения более подробной информации см. Ссылку ниже

http://maven.apache.org/surefire/maven-surefire-report-plugin/usage.html

...