unitaria tutorial suma software prueba para ejemplos descargar configuracion con c++ junit hudson googletest

c++ - tutorial - No se puede obtener hudson para analizar XML de salida de prueba JUnit



prueba unitaria con junit (3)

Así es como lo hago:

<target name="junit" depends="compile-tests" description="run all unit tests"> <mkdir dir="${reports}"/> <junit haltonfailure="false"> <jvmarg value="-Xms128m"/> <jvmarg value="-Xmx128m"/> <classpath> <path refid="project.classpath"/> </classpath> <formatter type="xml"/> <batchtest fork="yes" todir="${reports}"> <fileset dir="${test}/classes"> <include name="**/*Test*.class"/> </fileset> </batchtest> </junit> </target> <target name="generate-reports" depends="junit" description="create JUnit test HTML reports"> <mkdir dir="${reports}"/> <junitreport todir="${reports}"> <fileset dir="${reports}"> <include name="TEST-*.xml"/> </fileset> <report format="frames" todir="${reports}"/> </junitreport> </target>

EDITAR : Este problema ha sido corregido por google en gtest 1.4.0; ver el informe de error original para más información.

Recientemente cambié a gtest para mi framework de pruebas de C ++, y una gran característica de la que actualmente no puedo usar es la capacidad de generar informes de prueba XML de estilo JUnit, que nuestro servidor de compilación hudson podría leer.

El resultado XML generado por el conjunto de pruebas gtest todo parece legítimo:

<?xml version="1.0" encoding="UTF-8"?> <testsuite tests="370" failures="0" disabled="0" errors="0" time="45.61" name="AllTests"> <testsuite name="application" tests="7" failures="0" disabled="0" errors="0" time="8.953"> <testcase name="zero_tasks_on_bootup" status="run" time="0" classname="application" /> ...etc. </testsuite> </testsuite>

También intenté agregar una tarea JUnitReport a mi script de compilación ant, que funciona bien y genera XML de esta manera:

<?xml version="1.0" encoding="UTF-8"?> <testsuite tests="370" failures="0" disabled="0" errors="0" time="45.61" name="AllTests"> <testsuite name="application" tests="7" failures="0" disabled="0" errors="0" time="8.953"> <testcase name="zero_tasks_on_bootup" status="run" time="0" classname="application" /> ...etc. </testsuite> </testsuite>

El problema es que cada vez que le digo a la hormiga que publique los resultados de la prueba JUnit, y luego lo señala al resultado bruto de la prueba XML o al resultado compilado generado en la tarea JUnitReport, hudson siempre se queja de que no se encontraron resultados de la prueba.

No soy un chico de Java, así que no puedo decir lo que está pasando aquí, y no puedo encontrar un ejemplo de cómo debería ser el XML de JUnit. ¿Alguien puede ayudarme a señalarme en la dirección correcta?


Estoy casi seguro de que no es un problema analizar el XML, sino un problema para encontrar los archivos XML. Si está utilizando una ruta relativa en la configuración de Hudson, asegúrese de que está claro en qué directorio está relacionado (me parece recordar que no es obvio bajo ciertas circunstancias).

En cuanto a ejemplos de cómo se supone que deben verse los archivos JUnit XML, buena suerte con eso. No está precisamente especificado en ningún lado. Diferentes herramientas tienen diferentes dialectos. Dicho eso, Hudson hace un buen trabajo al reconocerlos a todos. Creo que fueron los desarrolladores de JUnitReport los primeros en introducir el formato XML, por lo que si está usando eso, será tan canónico como lo que obtendrá.


Editar : la prueba de Google ha solucionado este problema, que se incluye en la versión de gtest 1.4.0. Vea el informe de error original para más información.

¡Bah! Finalmente encontré la causa de este problema, es porque gtest produce un archivo XML gigante para todos los resultados de las pruebas, y hudson espera un informe de prueba XML por clase. He escrito una secuencia de comandos de Perl como una solución para este problema . Para usarlo, harías un objetivo en tu script hormiga xml que se parece a esto:

<target name="runtests"> <exec executable="wherever/${ant.project.name}Test" failonerror="false" dir="tests"> <arg value="--gtest_output=xml:${build.dir}/reports/${ant.project.name}.xml"/> </exec> <!-- Workaround for broken gtest output --> <mkdir dir="${build.dir}/reports/output"/> <exec executable="perl" failonerror="false" dir="tests"> <arg value="gtest-hudson.pl"/> <arg value="${build.dir}/reports/${ant.project.name}.xml"/> <arg value="${build.dir}/reports/output"/> </exec> </target>

Por alguna razón, a gtest tampoco le gusta el estilo incorrecto de barras que le pasan desde la hormiga, así que hice mi ejecutor sólo para Windows, ya que mi hudson se ejecuta en un servidor de Windows. Cambia a ''/'' para Unix, obviamente.

También he presentado un problema para esto en la página de prueba , y también uno en el rastreador de problemas de Hudson , así que con suerte uno de los dos equipos se dará cuenta del problema, ya que no tengo tiempo suficiente para saltar y hacer una parche yo mismo ... aunque si esto no se resuelve en el futuro cercano, tal vez tenga que hacerlo. ;)