2010-09-11 2 views
3

Я использую 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 
+0

Я также пользуюсь системой управления версиями, поэтому у меня есть опция Использовать выделенную папку для совместного использования библиотек, установленную в NetBeans, а также параметр «Копировать сервер JAR Files to Libraries Folder». У меня были предыдущие проблемы, в которых мне не удалось импортировать соответствующие библиотеки, но это не похоже на проблему с библиотекой ... – gkw

+0

См. Http://techo-ecco.com/blog/testng-with-cobertura/ о том, как правильно настроить его – 2010-12-08 06:04:07

ответ

0

Единственный случай, когда вы получаете 0% охват

  • Если у вас есть не правильно настройте свой путь к классу, ваши тесты: , работающие с кодом без инструмента, или
  • Ваш файл .ser (metadata) устарел, всякий раз, когда вы создаете/перестраиваете свой код, вы должны снова удалить существующий файл метаданных и инструмент.

Смотрите здесь хороший пример на пути к классам https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

Кроме того, это хорошая идея, чтобы сохранить Instrumented классов в отдельной папке, а также указать другую папку для тестовых классов.