Wie richte ich eine Ant-Aufgabe ein, um Emma Code-Coverage-Berichte zu generieren?Wie erzeuge ich Emma-Code-Coverage-Berichte mit Ant?
Antwort
um Fragen zu beantworten, wo die Quelle und instrumentiert Verzeichnisse werden (diese können zu was auch immer Ihre Standard-Verzeichnisstruktur geschaltet werden soll):
<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" />
Klassenpfade:
<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>
Zuerst Sie einrichten müssen wo Ant die Emma-Bibliotheken finden kann:
<path id="emma.lib" >
<pathelement location="${emma.dir}/emma.jar" />
<pathelement location="${emma.dir}/emma_ant.jar" />
</path>
Dann importieren Sie die Aufgabe:
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
Dann Instrument der 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>
Dann ein Ziel mit den richtigen VM Argumente wie laufen:
<jvmarg value="-Demma.coverage.out.file=${coverage}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
Schließlich Ihren Bericht generieren:
<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 führt einen anderen Weg ein o f Erhalten von Informationen zur Laufzeitabdeckung (.ec-Datei). Man kann die Daten von dem gegebenen Port des Computers, auf dem eine instrumentierte Anwendung läuft, aus der Ferne anfordern. Es ist also nicht notwendig, VM anzuhalten.
Um die Datei mit Laufzeit Abdeckungsdaten erhalten Sie folgenden Code-Schnipsel in Ihrem Ant-Skript zwischen Betrieb Ihres Tests und zum Erzeugen Berichterstattung Bericht einfügen müssen:
<emma>
<ctl connect="${emma.rt.host}:${emma.rt.port}" >
<command name="coverage.get" args="${emma.ec.file}" />
<command name="coverage.reset" />
</ctl>
</emma>
Andere Schritte zu Emma 2.0 ähnlich sind. Sie sind perfekt in previous post
Mehr Informationen über Emma 2.1-Funktionen beschrieben: http://sourceforge.net/project/shownotes.php?group_id=108932&release_id=336859
Die User Guide has a good example of how to set up your build script so dass Sie nicht nur trennen die instrumentierte Code aus der Ausführung, aber es ist auch alles in der gleichen <target>
enthalten, so dass Sie don Sie müssen nicht eine Reihe von verschiedenen Zielen ausführen, aber Sie können einfach etwas wie ant emma tests
(wenn ant tests
war, wie Sie normalerweise Ihre Komponententests zum Beispiel ausgeführt haben).
Hier ist ihr Beispiel:
<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. Wie erzeuge ich Zufallsidenticons?
- 2. Wie erzeuge ich kreisförmige Thumbnails mit PIL?
- 3. Wie erzeuge ich Zeit mit Scalacheck-Generatoren?
- 4. Wie erzeuge ich einen Report mit Kalebasse?
- 5. Wie erzeuge ich mehrstufige JSON mit R?
- 6. Wie erzeuge ich Mehrwortbegriffe rekursiv?
- 7. Wie laufe ich Java-Programm mit ant
- 8. Wie erzeuge ich Zeichenfolgen wie Hexadezimal mit einer anderen Basis?
- 9. Wie erzeuge ich dynamische Elemente dynamisch?
- 10. Wie erzeuge ich Zufallszahlen in Dart?
- 11. Wie erzeuge ich LaTeX von Isabelle/HOL?
- 12. Wie erzeuge ich Stereobilder von einer Monokamera?
- 13. Wie erzeuge ich Code unter Eclipse + PyDev?
- 14. Wie erzeuge ich eine Filterzeichenfolge für JSON?
- 15. Wie erzeuge ich eine alternierende Reichweite?
- 16. Wie erzeuge ich eine JDBC-Datenbank-URL?
- 17. Wie erzeuge ich die .svc Datei?
- 18. Wie erzeuge ich ein githubartiges Impact-Diagramm?
- 19. Wie erzeuge ich Spezifikationen für vorhandene Controller?
- 20. Wie erzeuge ich Zufallszahlen aus [0,1]?
- 21. Wie erzeuge ich RDOC für (alle) Rails?
- 22. Wie erzeuge ich SWX-Dateien serverseitig?
- 23. Wie erzeuge ich API-Dokumentation für SignalR
- 24. Wie erzeuge ich Slug aus chinesischem Text?
- 25. Wie erzeuge ich ein anderes Projekt?
- 26. Wie erzeuge ich die Häufigkeitstabelle in R?
- 27. Wie erzeuge ich XML mit Perls XML :: Simple?
- 28. Wie erzeuge ich Datei mit einer bestimmten Größe in Windows?
- 29. Wie erzeuge ich Dateien und zip/komprimiere dann mit Heroku?
- 30. Wie erzeuge ich eine HTML-Datei mit XSL?
sieht nicht, wie Sie $ {} Abdeckung definiert –