Я использую Cobertura 1.9.3 с NetBeans 6.8, Ant 1.7.1 и JDK 1.6.0_21, работающими с -WAR и EJB, JUnit 4.Cobertura показывает покрытие 0%
Когда я меняю линию pathelement location="${build.classes.dir}" /
на pathelement location="${build.test.classes.dir}" /
, есть некоторое покрытие (хотя и в неправильных классах, оно не должно быть в testclass, просто чтобы показать, что настройки окружения и .jar установлены правильно), показанные в html-отчеты.
Однако, когда я меняю его на pathelement location="${build.classes.dir}" /
, я всегда получаю покрытие 0%.
fwiw, когда контрольные папки содержат классы с инструментами в ${build.instrumented.dir}
(эти классы немного больше, чем в местоположении ${build.classes.dir}
). И да, я повторил после удаления cobertura.ser
с предыдущего запуска.
Могу ли я, пожалуйста, понять, что не так?
Приветствия,
Отрывок из build.xml
в папке -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: У меня также есть следующие настройки:
...
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
Я также пользуюсь системой управления версиями, поэтому у меня есть опция Использовать выделенную папку для совместного использования библиотек, установленную в NetBeans, а также параметр «Копировать сервер JAR Files to Libraries Folder». У меня были предыдущие проблемы, в которых мне не удалось импортировать соответствующие библиотеки, но это не похоже на проблему с библиотекой ... – gkw
См. Http://techo-ecco.com/blog/testng-with-cobertura/ о том, как правильно настроить его – 2010-12-08 06:04:07