2010-02-01 12 views
13

Me gustaría generar automáticamente un informe de prueba de unidad en formato html para la aplicación de Android en el servidor de integración continua de Hudson.Cómo generar informe de prueba de Android en HTML automáticamente

Por lo tanto, trato de ejecutar casos de prueba primero y reunir los archivos de resultados de prueba en formato xml. Luego, uso JUnitReport Task para transformar los archivos de resultados XML en formato HTML.

Ejecuto casos de prueba a través del marco de instrumentación de Android. Sin embargo, solo proporciona información de salida detallada en lugar del formato estándar JUnit XML. No tengo idea de cómo generar informes de pruebas de unidad HTML sin los archivos de resultados de JUnit XML.

Si ejecuto casos de prueba con Eclipse, puede exportar resultados en archivos XML con información de tiempo consumido por caso de prueba. Esos archivos XML pueden transformarse en HTML mediante la tarea JUnitReport correctamente. Como resultado, parece que es posible recolectar el resultado de la prueba con la información de tiempo consumido.

¿Hay alguna forma de obtener el archivo de resultados estándar JUnit XML automáticamente después de ejecutar casos de prueba en el marco de instrumentación de Android?

Respuesta

9

Tuvimos un problema similar en nuestra empresa. Revisamos todas las soluciones de código abierto disponibles y ninguna de ellas fue realmente perfecta. Así que desarrollamos y abrimos una solución para ello. Todavía no digo uno "último", pero ciertamente mucho mejor que Athena o el reportero de Python o cualquier análisis posterior a la prueba. Lo puedes encontrar aquí: http://code.google.com/p/the-missing-android-xml-junit-test-runner/

Proporciona:

  • archivo XML independiente por cada paquete involucrado
  • archivos XML se generan en el dispositivo (necesita ser pull'ed ADB después del ensayo)
  • temporización de las pruebas es totalmente compatible
  • hemos informado traza completa en caso de fallo/error

En lugar de analizar el código fuente de Java (como en athena) o analizar el resultado (el script de python), ampliamos el corredor de instrumentación android. De modo que obtenemos todos los beneficios del uso de opciones de línea de comando estándar para la selección de pruebas, habilitación de cobertura, etc., todas descritas aquí: http://developer.android.com/guide/developing/testing/testing_otheride.html#RunTestsCommand.

Pudimos ejecutar con éxito el código utilizando reglas de prueba estándar con cobertura analizada por emma, todo muy bien informado en Jenkins.

+0

Acabo de probar su solución que funciona casi estrecho hacia adelante con Jenkins. ¡Gracias! –

+0

Genial :). Encantado de ayudar. –

+2

Acabo de encontrar una solución similar a la tuya: https://github.com/jsankey/android-junit-report –

1

No creo que sea posible, por lo que debe crear una utilidad que convierta la salida del analizador de prueba de Android en archivos XML de formato JUnit.

Sin embargo, no podrá obtener el valor de tiempo por prueba, ya que el corrector de prueba de Android no parece generar esa información.

+0

Gracias por su respuesta. Agregué un párrafo como respuesta. – papalagi

+0

Interesante; He visto la salida del examinador de prueba de Android y miré el código fuente previamente, pero no vi nada sobre los tiempos de salida. Entonces me pregunto cómo funciona en Eclipse. Supongo que un vistazo al plugin ADT está en orden ... –

+0

Miré en la fuente del corredor y tampoco encontré nada. Pero encontré que hay dos analizadores de salida de prueba de corredor escritos en Java y Python en la ruta "/ development/testrunner" y "/ development/tools/ddms", respectivamente. Ayudan mucho a analizar la salida detallada del corredor de prueba. Sorprendentemente, ambos usan el "rendimiento" como clave para obtener información del tiempo. Además, los casos de prueba para el analizador de salida en la ruta "/ development/testrunner/tests" contienen datos de prueba de rendimiento. Entonces creo que debería haber una forma de activar el rendimiento. – papalagi

4

Acabo de ver que Dan Watling de DroidDudes trabaja una herramienta llamada Athena que parece ser similar a lo que usted desea.

Usted puede encontrar allí: http://droiddudes.com/

0

creo que los Athena enfoque es el no sea doloroso ya que simplemente puede instalar el archivo jar Athena en su sistema y añadir siguiente tarea ant

<property name="junit.dir" value="${basedir}/junit-results"/> 
<property name="athena.jar" value="/home/cruise/athena/athena-1.1.2.jar"/> 

<target name="prepare" description="Setup needed directories"> 
    <mkdir dir="${junit.dir}"/> 
</target> 

<!-- This target will compile/install tested project as well as test project to ensure tests are executed against latest code --> 
<target name="athena" depends="prepare, -install-tested-project, install" description="Run tests and convert result to xml using athena"> 
    <exec executable="java" os="Linux" failonerror="true"> 
    <arg value="-cp"/> 
    <arg value="${athena.jar}"/> 
    <arg value="com.synaptik.athena.Athena"/> 
    <arg value="${basedir}"/> 
    <arg value="${junit.dir}/TEST-result.xml"/> 
    </exec> 
</target> 

Desde la línea de comandos es simplemente una cuestión de ejecución ant athena y tiene el resultado de la prueba en xml. Este también será el objetivo que su secuencia de comandos CruiseControl debe desencadenar.

Cuestiones relacionadas