JaCoCo не создает отчеты о покрытии на основе исходного файла - имена методов не активируются - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть многомодульный проект Maven, в котором JaCoCo не генерирует отчеты, основанные на исходных файлах.

Обычно, если MyService - это тестируемый класс, он будет представлен двумя способами, одинчерез имя файла MyService.html в соответствующем расположении на основе пакета со списком методов, дающих общую картину охвата в цифрах и графиках - с перечислением всех методов в классе, и каждый метод имеет интерактивную ссылку на другой HTML MyService.java.html который содержит исходный код с красным / зеленым / желтым фоном для отображения статуса покрытия.

В моем сценарии генерируется только MyService.html, а не MyService.java.html, а в первом перечислены методы с деталями покрытия, но без гиперссылок на другой отчет, как показано ниже.

enter image description here

Проблема становится более интересной, поскольку моя конфигурация Maven не настроена в этом модуле, нов родительском модуле и другие дочерние модули могут генерировать отчеты правильно.Ниже приведена конфигурация плагина maven для справки.

Родительский POM:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>${jacoco.version}</version>
  <configuration>
     <destFile>${project.basedir}/target/jacoco-unit.exec</destFile>
     <dataFile>${project.basedir}/target/jacoco-unit.exec</dataFile>
     <append>true</append>
  </configuration>
  <executions>
     <execution>
        <id>jacoco-initialize</id>
        <goals>
           <goal>prepare-agent</goal>
        </goals>
     </execution>
     <execution>
        <id>jacoco-site</id>
        <phase>package</phase>
        <goals>
           <goal>report</goal>
        </goals>
     </execution>
  </executions>
</plugin>

Дочерний POM:

    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
    </plugin>

Попытка переключения версий JaCoCo, но ни одна не помогла, теперь придерживаюсьдо последней версии 0.8.2.И Maven последний - 3.6.0.Кроме этого, другой плагин, настроенный в дочернем помпе, - это PMD, чье присутствие или отсутствие не имеет никакого значения для отчета.

Аналогичная проблема: Плагин Gradle JaCoCo - имена классов и методов не активируются в кликахотчет

1 Ответ

0 голосов
/ 18 декабря 2018

В отсутствие Минимального, Полного и Проверяемого примера , который полностью демонстрирует шаги по воспроизведению вашей сложности, можно только процитировать JaCoCo FAQ :

Почемув отчете о покрытии не отображается выделенный исходный код?

Убедитесь, что выполнены следующие условия для выделения исходного кода в отчетах о покрытии JaCoCo:

  • Файлы классов должны быть скомпилированы с отладочной информациейсодержать номера строк.
  • Исходные файлы должны быть правильно предоставлены во время создания отчета.

О первой точке см. -g параметр javac, debug и debuglevel опции maven-compiler-plugin.

Для второго пункта убедитесь, что исходный файл Example.java с

package org.example;

находится в src/main/java/org/example/Example.java

...