Comment configurer une tâche Ant pour générer des rapports de couverture de code Emma?Comment générer des rapports de couverture de code Emma en utilisant Ant?
Répondre
Pour répondre aux questions sur l'endroit où la source et les répertoires instrumentés sont (ceux-ci peuvent être activés à tout ce que la structure de votre répertoire standard est):
<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" />
chemins de classe:
<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>
D'abord, vous devez configurer où Ant peut trouver les bibliothèques Emma:
<path id="emma.lib" >
<pathelement location="${emma.dir}/emma.jar" />
<pathelement location="${emma.dir}/emma_ant.jar" />
</path>
Puis importez le tâche:
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
Puis instrument le code:
<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>
Lancez ensuite une cible avec les arguments appropriés VM comme:
<jvmarg value="-Demma.coverage.out.file=${coverage}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
Enfin générer votre rapport:
<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 introduit une autre façon de f obtenir des informations de couverture d'exécution (fichier .ec). On peut demander à distance les données du port donné de l'ordinateur où une application instrumentée est exécutée. Il n'y a donc pas besoin d'arrêter VM.
Pour obtenir le fichier avec les données de couverture d'exécution, vous devez insérer l'extrait suivant dans votre script Ant entre l'exécution de vos tests et génération de rapports de couverture:
<emma>
<ctl connect="${emma.rt.host}:${emma.rt.port}" >
<command name="coverage.get" args="${emma.ec.file}" />
<command name="coverage.reset" />
</ctl>
</emma>
D'autres étapes sont similaires à Emma 2.0. Ils sont parfaitement décrits dans previous post
Plus d'informations sur Emma 2.1 Caractéristiques: http://sourceforge.net/project/shownotes.php?group_id=108932&release_id=336859
Le User Guide has a good example of how to set up your build script de sorte que non seulement vous séparer le code instrumenté de l'exécution, mais il est aussi le tout dans la même <target>
afin que vous ne Pas besoin d'exécuter une série de cibles différentes, mais au lieu de cela, vous pouvez simplement faire quelque chose comme ant emma tests
(si ant tests
était la façon dont vous avez normalement exécuté vos tests unitaires, par exemple).
Voici leur exemple:
<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. Emma ne fournit pas de couverture de code entre les projets
- 2. emma maven code du plugin en surbrillance
- 3. Comment puis-je supprimer/filtrer/ignorer un paquet d'Emma (couverture de code)
- 4. couverture de code en C
- 5. ClassFormatError utilisant JMockit avec EMMA
- 6. Outils de couverture de code en Java
- 7. couverture de code vs ExpectedException
- 8. Couverture de code et reproche
- 9. Couverture de code pour Mono?
- 10. Couverture de code pour PL/SQL
- 11. Emma n'incorpore pas le code source au rapport html
- 12. Outils de couverture de code libre
- 13. Compilation de j2me en utilisant Ant
- 14. Indicateurs de couverture de code C#
- 15. SketchFlow - Fusionner et générer des rapports Commentaires de plusieurs utilisateurs
- 16. Générer des rapports MySQL sur OpenOffice
- 17. Comment commencer à écrire un outil de couverture de code?
- 18. EMMA ne couvrira pas un de mes projets
- 19. Recherche d'un document Comparer pouvant générer des rapports de différence
- 20. Générer le fichier de construction Ant
- 21. Existe-t-il un outil de couverture de code fonctionnant avec des tests manuels?
- 22. Exclure les méthodes de la couverture de code avec Cobertura
- 23. JavaScript Code outil de couverture pour IE
- 24. Existe-t-il un moyen de centrer les rapports de couverture de code lcov sur un ou deux répertoires?
- 25. Mesure de la couverture de la documentation avec Javadoc et Ant
- 26. Comment générer des sources JUnit en utilisant maven-gunit-plugin
- 27. Comment générer des proxys d'interopérabilité COM en code source C#?
- 28. Création de javadoc avec des balises utilisant ant
- 29. Code généré par le compilateur dans la couverture de code
- 30. pourcentage de couverture en utilisant une requête SQL complexe ...?
Ne ressemble pas à vous $ {couverture défini} –