what test stands reports pom plugin for example does are java maven-2 ant surefire

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:

  1. No vincule el complemento AntRun a la fase de test , mueva la configuración fuera de la execution y llame a mvn antrun:run en la línea de comandos para generar los informes cuando lo desee.

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

  3. 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".



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.