Cobertura показывает 0% охват - PullRequest
       19

Cobertura показывает 0% охват

3 голосов
/ 11 сентября 2010

Я использую Cobertura 1.9.3 с NetBeans 6.8, Ant 1.7.1 и JDK 1.6.0_21, работающими с -WAR, и EJB, тесты JUnit 4.

Когда я меняю строку pathelement location="${build.classes.dir}" /pathelement location="${build.test.classes.dir}" /, есть некоторый охват (хотя в неправильных классах, он не должен быть в тестовом классе, просто чтобы показать, что среда и расположение .jar установлены правильно), показанный в отчетах html.

Однако, когда я изменяю его обратно на pathelement location="${build.classes.dir}" /, я всегда получаю 0% покрытия.

Между прочим, когда папки с инструментами содержат инструментальные классы в ${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>

===

Редактировать: У меня также есть следующие настройки:

        ...
        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

1 Ответ

0 голосов
/ 05 апреля 2014

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

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

См. Здесь хороший пример на classpath https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

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

...