java - test - ¿Hay un plugin de informe HTML Junit decente para Maven?
surefire test (7)
Así es como lo hice usando el sitio objetivo maven-surefire: informe :
<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>
Me parece que el complemento de surefire-report
muy inadecuado para mi estilo de trabajo. Limpio el proyecto todo el tiempo y no quiero pasar 5 minutos para reconstruir todo el sitio cada vez que quiero ver el informe de prueba en mi navegador.
Si mvn surefire-report:report-only
, el informe generado es demasiado feo y apenas legible.
Lo que estoy buscando es algo así como la tarea de informe de hormigas. ¿Hay uno disponible por ahí ya?
Crear una nueva configuración de ejecución de Maven y con el objetivo =>
surefire-report:report site -DgenerateReports=false
Esto puede ayudarte a tener una mejor vista de informe con css.
De hecho, generar todo el sitio en cada compilación claramente no es una opción. Pero el problema es que mvn surefire-report:report-only
no crea los archivos css / *. Css, por lo tanto, el resultado es feo. Esto se registra en SUREFIRE-616 (no significa que algo sucederá). Personalmente, no uso los informes HTML para poder vivir con eso, pero esa no es una buena respuesta, así que aquí hay una solución alternativa basada en la tarea ant (* suspiro *):
<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>
Actualización: mi idea inicial era ejecutar el complemento AntRun de Maven "a pedido" para generar los informes ... pero eso no es lo que publiqué, lo vinculé a la fase de test
... Pero no pensé en el caso de pruebas fallidas (que detendrían la compilación y evitarían la ejecución del complemento AntRun). Entonces, o bien:
No vincule el complemento AntRun a la fase de
test
, mueva la configuración fuera de laexecution
y llame amvn antrun:run
en la línea de comandos para generar los informes cuando lo desee.o usa la opción
testFailureIgnore
del mojo de prueba y configúralo en verdadero en la configuración del complemento surefire:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <testFailureIgnore>true</testFailureIgnore> </configuration> </plugin>
o establezca esta expresión desde la línea de comando usando el parámetro -D:
$ mvn test -Dmaven.test.failure.ignore=true
Creo que la Opción # 1 es la mejor opción, no necesariamente quiere generar los informes (especialmente cuando se pasa la prueba) y generarlos sistemáticamente puede ralentizar la compilación a largo plazo. Los generaría "a pedido".
Ejecuta el siguiente comando
mvn clean install surefire-report:report
Puede encontrar el informe en la siguiente ubicación
{basedir}/target/site/surefire-report.html
Para más detalles, consulte el enlace a continuación
http://maven.apache.org/surefire/maven-surefire-report-plugin/usage.html
Esto es lo que hago:
# 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
vaya a target / site / surefire-report.html para el informe.
Después de ejecutar las pruebas, el resto de las dos se ejecutan en aproximadamente 3.5 segundos para mí.
Espero que ayude. ¡Disfrutar!
Gracias por Pascal, he encontrado una solución mejorada para hacer lo que quiero hacer:
<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>
Esta versión usa una versión más nueva de ant y la mejor de todas. Sin embargo, todavía no he encontrado una manera de generar un informe de prueba cuando las pruebas fallan. ¿Cómo debo hacer eso?
Puede configurar -Dmaven.test.failure.ignore=true
para generar el informe de prueba cuando las pruebas fallan.