0

Я выполняю тесты с помощью jacoco-агента. Когда я запускаю mvn verify, создается файл jacoco.exec.Почему нет jacoco.exe, созданного при выполнении одного теста, но он создается, когда запускаются все тесты?

Когда я запустил mvn clean verify -Dtest=com.org.MyTest -DfailIfNoTests=false, тогда нет jacoco.exec файл.

Вот моя конфиги.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>test</phase> 
      <id>testconfig</id> 
      <configuration> 
       <argLine>${test.jvm.options} ${jacoco.agent.argLine}</argLine> 
       <skip>false</skip> 
      </configuration> 
      <goals><goal>test</goal></goals> 
     </execution> 
    </executions> 
</plugin> 

Вот мой jacoco конфигурации

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.5.201505241946</version> 
    <configuration> 
     <properties> 
      <property> 
       <name>listener</name> 
       <value>org.sonar.java.jacoco.JUnitListener</value> 
      </property> 
     </properties> 
    </configuration> 
    <executions> 
     <execution> 
      <id>unit_agent</id> 
      <phase>initialize</phase> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
      <configuration> 
       <propertyName>jacoco.agent.argLine</propertyName> 
      </configuration> 
     </execution>       
    </executions> 
</plugin> 

Мой вопрос: Почему нет jacoco.exe производится, когда один тест запускается - но это получается, когда все тесты выполняются?

+0

Возможно, виноват '-Pci'? Что это за профиль и что он делает? – Tunaki

+0

Спасибо - это полезно - я уточнил вопрос. – hawkeye

+0

Я не могу воспроизвести проблему (удаление 'test.jvm.options' из данной конфигурации, поскольку она не определена). – Tunaki

ответ

0

Журнал выполнения mvn clean verify -Dtest=com.org.MyTest -DfailIfNoTests=false показывает что-то вроде (я использую Apache Maven 3.3.9):

[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ example --- 
[INFO] Surefire report directory: /private/tmp/jacoco-example/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running com.org.MyTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec - in com.org.MyTest 

Results : 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 

[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (testconfig) @ example --- 
[INFO] Skipping execution of surefire because it has already been run for this configuration 

Обратите внимание, что maven-surefire-plugin выполняются два раза - один раз с идентификатором default-test и другое исполнение с идентификатором testconfig фактически пропущен, тогда как только конфигурация с id testconfig использует ${jacoco.agent.argLine}.

Изменение определения для maven-surefire-plugin на

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
     <argLine>${jacoco.agent.argLine}</argLine> 
    </configuration> 
</plugin> 

решает эту проблему.

+0

Это создает jacoco.exec? – hawkeye

+0

@hawkeye да – Godin

+0

Brilliant- спасибо – hawkeye