2015-04-17 1 views
2

Im генерации отчета охват jacoco с помощью следующей цели:JaCoCo расстановок отчет покрытия (исключить тестовые классы)

<target name="report" depends="test"> 

      <!-- This task needs the collected execution data and ... --> 
      <executiondata> 
       <file file="${result.exec.file}" /> 
      </executiondata> 

      <!-- the class files and optional source files ... --> 
      <structure name="JaCoCo Ant Example"> 
       <classfiles> 
        <fileset dir="${result.classes.dir}" /> 
       </classfiles> 
       <sourcefiles encoding="UTF-8"> 
        <fileset dir="${src.dir}" > 
        <exclude name="**/*Test*.class"/> 
        </fileset> 
       </sourcefiles> 
      </structure> 

      <!-- to produce reports in different formats. --> 
      <html destdir="${result.report.dir}" /> 
      <csv destfile="${result.report.dir}/report.csv" /> 
      <xml destfile="${result.report.dir}/report.xml" /> 
     </jacoco:report> 
    </target> 

Проблема заключается в том, что отчет учитывает код из модульных тестов, и я считаю этого факта ошибка. Таким образом, процент покрытия вашей полосы покрытия и охват команд будут искусственно увеличены (поскольку тестовые линии считаются покрытыми на 100%), и правильность отчета сильно затронута. Я пытался добавить этот тег

<exclude name="**/*Test*.class"/ 

под тэгом набора файлов, в надежде, что testClasses будут исключены, но оно не работает. У вас есть идеи по моей проблеме? Я хочу избежать программной модификации отчета . Спасибо!

ответ

3

Вы должны исключить файлы тестового класса из classfiles набора файлов:

<structure name="JaCoCo Ant Example"> 
     <classfiles> 
      <fileset dir="${result.classes.dir}"> 
       <exclude name="**/*Test*.class"/> 
      </fileset> 
     </classfiles> 
     <sourcefiles encoding="UTF-8"> 
      <fileset dir="${src.dir}" /> 
     </sourcefiles> 
</structure> 

См documentation:

«Обратите внимание, что файлы классов и файлы исходного кода элементы принимают любые Ant сбор ресурсов Поэтому и фильтрации. набор файлов классов возможен и позволяет сузить область действия сообщения, например:

<classfiles> 
    <fileset dir="classes"> 
     <include name="org/jacoco/examples/important/**/*.class"/> 
    </fileset> 
</classfiles> 

Это потому, что фактический отчет составлен с classfiles. sourcefiles должны содержать выделенный отчет в отчете - так как человеческий глаз не может читать скомпилированный код.

Опять из документации:

файлы классы: Контейнерный элемент для Ant ресурсов и ресурсов коллекций, которые могут указать файлы классы Java, архивные файлы (фляги, войны, ухо и т.д. или Pack200) или папки, содержащие файлы классов. Архивы и папки для рекурсивно ищутся для файлов классов.

исходников,: Дополнительный контейнер элемент для Ant ресурсов и коллекций ресурсов , которые определяют соответствующие исходные файлы. Если исходные файлы указаны в , некоторые форматы отчетов включают выделенный исходный код. Исходные файлы могут быть указаны как отдельные файлы или как источник каталогов.

+0

Когда вышеупомянутое изменение сделано для 'build.xml', исключенный класс по-прежнему является частью отчета с' 0% 'покрытием или исключенным классом или пакетом завершен удален, а не частью отчета? Ценю вашу помощь. – Rao