¿Cómo configuro una tarea Ant para generar informes de cobertura de código Emma?¿Cómo puedo generar informes de cobertura de código Emma usando Ant?
Respuesta
Para responder a preguntas acerca de dónde la fuente y directorios instrumentados son (estos se pueden cambiar a lo que su estructura de directorios estándar es):
<property file="build.properties" />
<property name="source" location="src/main/java" />
<property name="test.source" location="src/test/java" />
<property name="target.dir" location="target" />
<property name="target" location="${target.dir}/classes" />
<property name="test.target" location="${target.dir}/test-classes" />
<property name="instr.target" location="${target.dir}/instr-classes" />
rutas de clases:
<path id="compile.classpath">
<fileset dir="lib/main">
<include name="*.jar" />
</fileset>
</path>
<path id="test.compile.classpath">
<path refid="compile.classpath" />
<pathelement location="lib/test/junit-4.6.jar" />
<pathelement location="${target}" />
</path>
<path id="junit.classpath">
<path refid="test.compile.classpath" />
<pathelement location="${test.target}" />
</path>
Lo primero que necesita para configurar donde Ant puede encontrar las bibliotecas de Emma:
<path id="emma.lib" >
<pathelement location="${emma.dir}/emma.jar" />
<pathelement location="${emma.dir}/emma_ant.jar" />
</path>
Luego importe la tarea:
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
Entonces instrumento el código:
<target name="coverage.instrumentation">
<mkdir dir="${instr.target}"/>
<mkdir dir="${coverage}"/>
<emma>
<instr instrpath="${target}" destdir="${instr.target}" metadatafile="${coverage}/metadata.emma" mode="copy">
<filter excludes="*Test*"/>
</instr>
</emma>
<!-- Update the that will run the instrumented code -->
<path id="test.classpath">
<pathelement location="${instr.target}"/>
<path refid="junit.classpath"/>
<pathelement location="${emma.dir}/emma.jar"/>
</path>
</target>
A continuación, ejecute un objetivo con los argumentos de VM propios como:
<jvmarg value="-Demma.coverage.out.file=${coverage}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
Finalmente generar el informe:
<target name="coverage.report" depends="coverage.instrumentation">
<emma>
<report sourcepath="${source}" depth="method">
<fileset dir="${coverage}" >
<include name="*.emma" />
</fileset>
<html outfile="${coverage}/coverage.html" />
</report>
</emma>
</target>
Emma 2.1 introduce otra forma de f obtener información de cobertura de tiempo de ejecución (archivo .ec). Uno puede solicitar remotamente los datos del puerto dado de la computadora donde se ejecuta una aplicación instrumentada. Entonces no hay necesidad de detener VM.
para obtener el archivo con los datos de tiempo de ejecución de la cobertura tiene que insertar el siguiente fragmento en el script Ant entre el funcionamiento de sus pruebas y el informe de la cobertura de generación:
<emma>
<ctl connect="${emma.rt.host}:${emma.rt.port}" >
<command name="coverage.get" args="${emma.ec.file}" />
<command name="coverage.reset" />
</ctl>
</emma>
Otros pasos son similares a Emma 2.0. Están perfectamente descritos en previous post
Más información sobre Emma 2.1 Características: http://sourceforge.net/project/shownotes.php?group_id=108932&release_id=336859
El User Guide has a good example of how to set up your build script de modo que usted no sólo separada del código instrumentado de la ejecución, pero también es todo lo contenido en la misma <target>
para que Don No tiene que ejecutar una serie de objetivos diferentes, sino que puede hacer algo como ant emma tests
(si ant tests
fue la forma en que normalmente realizó las pruebas de su unidad, por ejemplo).
Aquí es su ejemplo:
<target name="emma" description="turns on EMMA instrumentation/reporting" >
<property name="emma.enabled" value="true" />
<!-- EMMA instr class output directory: -->
<property name="out.instr.dir" value="${basedir}/outinstr" />
<mkdir dir="${out.instr.dir}" />
</target>
<target name="run" depends="init, compile" description="runs the examples" >
<emma enabled="${emma.enabled}" >
<instr instrpathref="run.classpath"
destdir="${out.instr.dir}"
metadatafile="${coverage.dir}/metadata.emma"
merge="true"
/>
</emma>
<!-- note from matt b: you could just as easily have a <junit> task here! -->
<java classname="Main" fork="true" >
<classpath>
<pathelement location="${out.instr.dir}" />
<path refid="run.classpath" />
<path refid="emma.lib" />
</classpath>
<jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
</java>
<emma enabled="${emma.enabled}" >
<report sourcepath="${src.dir}" >
<fileset dir="${coverage.dir}" >
<include name="*.emma" />
</fileset>
<txt outfile="${coverage.dir}/coverage.txt" />
<html outfile="${coverage.dir}/coverage.html" />
</report>
</emma>
</target>
- 1. Cómo utilizar la cobertura de código EMMA en Android
- 2. ¿Hay alguna herramienta para convertir los informes Emma XML al formato XML de Cobertura?
- 3. Cobertura Emma en Enum tipos
- 4. Herramienta de cobertura EMMA que no muestra cobertura línea por línea
- 5. ¿Cómo exportar la cobertura de emma a HTML en eclipse?
- 6. Cómo generar el Informe de Cobertura del Código Cobertura usando Maven de Hudson
- 7. Scala, sbt y emma o Cobertura
- 8. ¿Cómo forzar al informe de cobertura del código de Emma a ignorar algunos métodos?
- 9. Cobertura de código de Emma para la prueba JUnit de Android
- 10. Creación de proyectos de Android con TeamCity: pruebas y problemas de cobertura de código
- 11. Cobertura de código de Java en Hudson
- 12. Medición de la cobertura de documentación con Javadoc y Ant
- 13. Cobertura de cobertura para pruebas de integración en Maven
- 14. Excluir métodos de cobertura de código con Cobertura
- 15. Cobertura de código/cobertura recomendada valores
- 16. ¿Cómo generar cobertura XML con nosetests?
- 17. C# Cobertura de código con Selenium
- 18. Documentación de las tareas Ant disponibles para Android?
- 19. Excluir métodos específicos de cobertura de código de cobertura?
- 20. Cobertura frente al código alcanzable
- 21. Integración de plugins de informes de Maven
- 22. Nunidad y código de cobertura para C#
- 23. TDD y Cobertura de código
- 24. abstractproperties excluir de la cobertura de los informes
- 25. Diagnóstico de .NET OutOfMemoryException al generar informes
- 26. ¿Cómo generar una buena cobertura de código de lógica de coma flotante?
- 27. ¿Cómo generar informes basados en elementos de trabajo TFS? Hace
- 28. Cobertura de código usando pruebas mono y nunit
- 29. PHPSpec y informe de cobertura
- 30. java.lang.RuntimeException: Stub! - ¿Cobertura del código de Android?
No parece que haya definido $ {} la cobertura –