2010-05-17 14 views
27

Uważam, że wtyczka surefire-report jest bardzo nieodpowiednia dla mojego stylu pracy. Cały czas czyścimy projekt i nie chcę poświęcać 5 minut na odbudowanie całej witryny za każdym razem, gdy chcę przejrzeć raport z testu w mojej przeglądarce.Czy istnieje przyzwoita wtyczka HTML Junit do Mavena?

Jeśli wpiszę: mvn surefire-report:report-only, wygenerowany raport jest zbyt brzydki i ledwo czytelny.

To, czego szukam, to coś w rodzaju zadania JUnitReport mrówki. Czy jest tam już dostępna?

Odpowiedz

25

Rzeczywiście, generowanie całej witryny przy każdej kompilacji zdecydowanie nie jest opcją. Problem polega jednak na tym, że mvn surefire-report:report-only nie tworzy plików css/* .css, stąd wynik jest brzydki. Jest to zalogowany SUREFIRE-616 (nie oznacza to, że coś się stanie). Osobiście nie używam raporty HTML, który dużo, więc mogę z tym żyć, ale to nie jest dobra odpowiedź tak tutaj jest rozwiązanie oparte na ant zadania (* westchnienie *):

<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> 

Aktualizacja: Moim początkowym pomysłem było uruchomienie wtyczki Maven AntRun "na żądanie" w celu wygenerowania raportów ... ale to nie jest to, co napisałem, związałem ją z fazą test ... Ale nie myślałem o przypadku nieudanych testów (które zatrzymałoby kompilację i uniemożliwiło uruchomienie wtyczki AntRun). Więc, albo:

  1. nie wiążą wtyczki AntRun do fazy test przesuń konfigurację poza execution i nazywają mvn antrun:run w wierszu poleceń do generowania raportów, kiedy chce.

  2. lub użyć opcji z mojo testowym testFailureIgnore i ustawić go na true w murowany konfiguracji wtyczki:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
        </configuration> 
    </plugin> 
    
  3. lub ustawić ten wyraz z linii poleceń za pomocą parametru -D:

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

Myślę, że opcja nr 1 jest najlepszą opcją, niekoniecznie chcesz generować raporty (szczególnie gdy test przechodzi) i generowanie ich systematycznie może spowolnić proces budowania w dłuższej perspektywie. Generowałem je "na żądanie".

+0

Czy to otworzyć podproces lub po prostu uruchamia mrówki osadzone? Jeśli to tylko osadza mrówkę i jej zadanie, to jest dokładnie to, czego potrzebuję. –

+0

@jimmy To uruchamia zadanie ant w tym samym procesie. –

+0

To jest dokładnie to, co muszę wiedzieć! –

4

Dzięki Pascal, Znalazłem ulepszonego rozwiązania robić to, co chcę zrobić:

<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> 

Ta wersja używa nowszej wersji mrówka i najlepszy ze wszystkich. Jednak nadal nie znalazłem sposobu na wygenerowanie raportu z testu, gdy testy zakończą się niepowodzeniem. Jak mam to zrobić?

+0

Czy udało Ci się wygenerować raport po niepowodzeniu testu? – masT

+0

Witaj, Po tej konfiguracji ANT w MAVEN, raport Surefire generuje zduplikowane testy w raporcie html. Jak mogę tego uniknąć? – royki

1

Można ustawić -Dmaven.test.failure.ignore=true, aby wygenerować raport z testu, gdy testy zakończą się niepowodzeniem.

2

Oto jak to zrobiłem używając cel witryna Maven-murowany: zgłosić:

<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> 
31

To co mam zrobić:

# 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 

iść do celu/site/surefire-report.html dla raportu.

Po uruchomieniu testów reszta z tych dwóch uruchomi się dla mnie w około 3,5 sekundy.

Nadzieję, że pomaga. Cieszyć się!

+1

To powinno być zaakceptowane jako najłatwiejszy sposób osiągnięcia rezultatów i odpowiedzi. – vikramvi

1

Utwórz nową konfigurację run Maven i cel =>

surefire-report:report site -DgenerateReports=false 

To może pomóc, aby mieć lepszy widok raportu z CSS.

Powiązane problemy