android testing code-coverage metrics

Cómo utilizar la cobertura del código EMMA en Android



testing code-coverage (3)

Al parecer, EMMA no es compatible con el SDK todavía. Solo es compatible con aplicaciones y pruebas que forman parte del árbol de origen. Lo que parece extraño porque no mencionan esto en la guía de desarrollo donde le informan sobre las opciones de instrumentación de EMMA. http://developer.android.com/guide/developing/testing/testing_otheride.html#AMOptionsSyntax

Puede leer la respuesta de este tipo (¿quién parece estar en el equipo de desarrollo? No lo sé) http://groups.google.com/group/android-developers/msg/a542afd318832371

Si desea descargar y compilar Android Source, parece factible que EMMA trabaje para su propia aplicación. Sin embargo, suena un poco complicado y posiblemente un poco inestable. Consulte el tema completo para obtener más información: http://groups.google.com/group/android-developers/browse_thread/thread/43cf8a8ca5662f85/9b68eec3e7b625f3?lnk=gst&q=Emma#

Soy nuevo en EMMA, no sé cómo usar esto para el sistema Android. ¿Alguien puede dar una muestra para usar esto con Android? Muchas gracias.


Si está utilizando maven para su proyecto, es bastante simple con dispositivos rooteados, consulte este wiki:

http://code.google.com/p/maven-android-plugin/wiki/EmmaMaven

fue fácil implementar la solución aparte de la generación de informes, pero si revisa los comentarios de la wiki encontrará la solución


Solo he podido hacer funcionar a emma usando ant. Si tienes una configuración de construcción de hormigas, entonces puedes ejecutar:

ant emma debug install ant emma debug install test

El primero se ejecuta en el directorio de su proyecto, el segundo desde el directorio de prueba. Consulte la documentación para obtener más detalles: http://developer.android.com/guide/developing/building/building-cmdline.html

Si aún no tiene un archivo ant build.xml, puede ver cómo generar uno de su proyecto actual aquí: http://developer.android.com/guide/developing/projects/projects-cmdline.html

La parte triste es que esto solo funcionará en el emulador o en un dispositivo rooteado. Esto se debe a que el archivo de cobertura se genera en una carpeta que requiere root. También necesitaba modificar el archivo android-sdk / tools / ant / build.xml para copiar el archivo en mi dispositivo rooteado en otro lugar para poder sacarlo. Modifiqué el bloque emma del xml para que fuera el siguiente:

<if condition="${emma.enabled}"> <then> <echo>WARNING: Code Coverage is currently only supported on the emulator and rooted devices.</echo> <run-tests-helper emma.enabled="true"> <extra-instrument-args> <arg value="-e" /> <arg value="coverageFile" /> <arg value="${emma.dump.file}" /> </extra-instrument-args> </run-tests-helper> <echo>Copying coverage to readable directory...</echo> <exec executable="${adb}" failonerror="true"> <arg line="${adb.device.arg}" /> <arg value="shell" /> <arg value="echo cp ${emma.dump.file} /sdcard/coverage.ec | su" /> </exec> <echo>Downloading coverage file into project directory...</echo> <exec executable="${adb}" failonerror="true"> <arg line="${adb.device.arg}" /> <arg value="pull" /> <arg value="/sdcard/coverage.ec" /> <arg value="coverage.ec" /> </exec> <echo>Extracting coverage report...</echo> <emma> <report sourcepath="${tested.project.absolute.dir}/${source.dir}" verbosity="${verbosity}"> <!-- TODO: report.dir or something like should be introduced if necessary --> <infileset dir="."> <include name="coverage.ec" /> <include name="coverage.em" /> </infileset> <!-- TODO: reports in other, indicated by user formats --> <html outfile="coverage.html" /> </report> </emma> <echo>Cleaning up temporary files...</echo> <delete file="coverage.ec" /> <delete file="coverage.em" /> <echo>Saving the report file in ${basedir}/coverage/coverage.html</echo> </then> <else> <run-tests-helper /> </else> </if>