J'utilise Cobertura 1.9.3 avec NetBeans 6.8, Ant 1.7.1 et 1.6.0_21 en cours d'exécution avec JDK -WAR et EJB, JUnit 4 tests. Lorsque je change la ligne pathelement location="${build.classes.dir}" /
en pathelement location="${build.test.classes.dir}" /
, il y a une certaine couverture (bien que dans les mauvaises classes, elle ne devrait pas être dans la classe de test, juste pour montrer que l'environnement et les emplacements .jar sont réglés correctement) montrés dans le rapports html.Cobertura montrant 0% de couverture
Cependant, quand je change de nouveau à pathelement location="${build.classes.dir}" /
, je reçois toujours 0% de couverture.
fwiw, lorsque les dossiers d'instrumentation contiennent des classes instrumentées dans ${build.instrumented.dir}
(ces classes sont légèrement plus grandes que celles de l'emplacement ${build.classes.dir}
). Et oui, j'ai réessayé après avoir supprimé cobertura.ser
de l'exécution précédente.
ce que je pourrais s'il vous plaît avoir la moindre idée sur ce qui ne va pas?
Cheers,
Snippet de build.xml
dans un dossier -ejb
.
<property environment="env"/>
<path id="cobertura.class.path">
<fileset dir="${build.dir}/../../lib">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef classpathref="cobertura.class.path" resource="tasks.properties"/>
<target name="-pre-compile-test">
<delete dir="${build.instrumented.dir}" />
<delete dir="${build.report.cobertura.dir}" />
<mkdir dir="${build.instrumented.dir}" />
<mkdir dir="${build.report.cobertura.dir}" />
<cobertura-instrument todir="${build.instrumented.dir}" classpathref="cobertura.class.path">
<ignore regex="org.apache.log4j.*" />
<includeClasses regex=".*" />
<excludeClasses regex=".*\.Test.*" />
<excludeClasses regex=".*\.TestSuite.*" />
<instrumentationClasspath>
<pathelement location="${build.classes.dir}" />
</instrumentationClasspath>
</cobertura-instrument>
</target>
<target name="-post-test-run">
<cobertura-report format="html" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
<cobertura-report format="xml" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
</target>
===
Edit: J'ai aussi la configuration suivante:
...
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
build.instrumented.dir=${build.dir}/instrumented
build.report.dir=${build.dir}/report
build.report.cobertura.dir=${build.report.dir}/cobertura
...
javac.classpath=\
${libs.GlassFish_v3.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}
...
javac.test.classpath=\
${javac.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}:\
${libs.Libraries_Needed_For_JUnit.classpath}:\
${build.instrumented.dir}:\
${build.classes.dir}:\
${libs.junit_4.classpath}
...
run.test.classpath=\
${javac.test.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}:\
${libs.Cobertura.classpath}:\
${libs.Libraries_Needed_For_JUnit.classpath}:\
${libs.junit_4.classpath}:\
${build.test.classes.dir}
...
src.dir=${source.root}/java
test.src.dir=test
Je suis aussi sur un système de contrôle de version si j'ai l'utilisation du dossier dédié pour le partage de bibliothèques option cochée dans NetBeans, ainsi que le serveur de copie des fichiers JAR à l'option Bibliothèques dossier. J'ai eu des problèmes précédents dans lesquels je ne ai pas importer les bibliothèques pertinentes, mais cela ne semble pas être un problème bibliothèque ... – gkw
Voir sur la façon de http://techo-ecco.com/blog/testng-with-cobertura/ le configurer correctement –