JaCoCo (Offline Instrumentation) в <goal>инструмент </goal> анализирует весь pom.xml. Но мне нужна только часть тестов - PullRequest
2 голосов
/ 01 октября 2019

В основном мне нужен jacoco только для инструментария в тестовой части, но он инструментирует весь pom.xml, и отчет содержит все (данные из «oracle.jdbc.driver», «com.mysql.jdbc»… и т. Д.)

Пару дней пытался почти со всем. Но мне пока не удалось

Обратите внимание, как jacoco: instrument обрабатывает весь pom.xml

[INFO] --- jacoco-maven-plugin:0.8.4:instrument (default-instrument) @ myApp ---
...
[DEBUG]   (f) project = MavenProject: com.firstPackage.tdz:myApp:X.1.0 @ C:\rootFolder\my_app\server\MyApp\pom.xml

И мои тесты выполняются в

[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ myApp ---
[DEBUG] Source directories: [C:\rootFolder\my_app\server\myApp\tests\src]
[DEBUG] Classpath: [C:\devel\my_app\server\myApp\target\test-classes

Это мой поток maven:

[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ myApp ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3582 source files to c:\rootFolder\my_app\server\myApp\target\classes
...
[INFO] --- aspectj-maven-plugin:1.3:compile (default) @ myApp ---
...
[INFO] --- jacoco-maven-plugin:0.8.4:instrument (default-instrument) @ myApp ---
...
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ myApp ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 326 source files to c:\rootFolder\my_app\server\myApp\target\test-classes
...
[INFO] --- aspectj-maven-plugin:1.3:test-compile (default) @ myApp ---
...
[INFO] --- maven-surefire-plugin:2.15:test (default-test) @ myApp ---

... finally

[INFO] --- jacoco-maven-plugin:0.8.4:restore-instrumented-classes (default-restore-instrumented-classes) @ myApp ---
...
[INFO] --- jacoco-maven-plugin:0.8.4:report (default-report) @ myApp ---
[INFO] Loading execution data file c:\devel\my_app\server\MyApp\target\jacoco.exec
[INFO] Analyzed bundle 'myApp' with 5562 classes

Любой реальный пример здесь был бы хорош в "Jacoco default-instrument" для части только для запуска испытаний. Это возможно?

<execution>
      <id>default-instrument</id>
      <goals>
         <goal>instrument</goal>
      </goals>
      <configuration>
      <!-- any real example here? Notice maven's behavior above -->
      </configuration>
  </execution>

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Оба jacoco:instrument и jacoco:report работают с target/classes, потому что это классы, которые выполняются и охват которых измеряется.

ЕслиВы помещаете в target/classes больше классов, чем в src, тогда без соответствующих inclusions / exclusions они также будут инструментированы и представлены.

Обратите внимание, что исключение классов из instrumentation недостаточно для исключения классов из report - цитирование FAQ по JaCoCo :

Генератор отчетов не может определить, был ли класс исключен из контрольно-измерительных приборов или не выполнен

Поэтому, пожалуйста, убедитесь, что вы правильно настроили выполнение и instrument и report голов . Maven позволяет настраивать разные варианты выполнения разных целей разными способами, вот лишь один из примеров:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <execution>
    <goals>
      <goal>instrument</goal>
      <goal>report</goal>
    </goals>
    <configuration>
      <!-- this configuration affects this "execution" of "instrument" and "report" goals -->
      <excludes>*</excludes>
    </configuration>
  </execution>
1 голос
/ 01 октября 2019

Вы можете использовать тег <includes> и поместить туда свой пакет по умолчанию.

<execution>
      <id>default-instrument</id>
      <goals>
         <goal>instrument</goal>
      </goals>
      <configuration>
           <includes> my/package/** </includes>
      </configuration>
</execution>

ссылка

...