182 votes

Obtention du message "Skipping JaCoCo execution due to missing execution data file" lors de l'exécution de JaCoCo.

J'utilise Maven 3.0.3, JUnit 4.8.1 et Jacoco 0.6.3.201306030806, et j'essaie de créer des rapports de couverture de test.

J'ai un projet avec uniquement des tests unitaires, mais je n'arrive pas à faire fonctionner les rapports, j'obtiens sans cesse l'erreur suivante : Skipping JaCoCo execution due to missing execution data file quand je cours :

mvn clean install -P test-coverage

Voici comment mon pom est configuré :

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.14.1</version>
  <configuration>
    <reuseForks>true</reuseForks>
    <argLine>-Xmx2048m</argLine>
  </configuration>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-failsafe-plugin</artifactId>
  <version>2.14.1</version>
  <configuration>
    <reuseForks>true</reuseForks>
    <argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>integration-test</goal>
        <goal>verify</goal>
      </goals>
    </execution>
  </executions>
</plugin>
...
<profile>
  <id>test-coverage</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.6.3.201306030806</version>
        <configuration>
          <destfile>${basedir}/target/coverage-reports/jacoco-unit.exec</destfile>
          <datafile>${basedir}/target/coverage-reports/jacoco-unit.exec</datafile>
        </configuration>
        <executions>
          <execution>
            <id>prepare-unit-tests</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
          </execution>
          <!-- prepare agent for measuring integration tests -->
          <execution>
            <id>prepare-integration-tests</id>
            <goals>
              <goal>prepare-agent</goal>
            </goals>
            <phase>pre-integration-test</phase>
            <configuration>
              <propertyName>itCoverageAgent</propertyName>
            </configuration>
          </execution>
          <execution>
            <id>jacoco-site</id>
            <phase>verify</phase>
            <goals>
              <goal>report</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</profile>

Tous mes tests se déroulent avec succès. Voici une partie de la sortie de Maven :

[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:prepare-agent (prepare-unit-tests) @ myproject ---
[INFO] argLine set to -javaagent:/Users/davea/.m2/repository/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002-runtime.jar=destfile=/Users/davea/Dropbox/workspace/myproject/target/jacoco.exec
[INFO] 
    ...
Tests run: 14, Failures: 0, Errors: 0, Skipped: 0

[INFO]
    ...
[INFO] 
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:prepare-agent (prepare-integration-tests) @ myproject ---
[INFO] itCoverageAgent set to -javaagent:/Users/davea/.m2/repository/org/jacoco/org.jacoco.agent/0.6.2.201302030002/org.jacoco.agent-0.6.2.201302030002-runtime.jar=destfile=/Users/davea/Dropbox/workspace/myproject/target/jacoco.exec 
[INFO] 
[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (default) @ myproject ---
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO] 
[INFO] --- maven-failsafe-plugin:2.14.1:verify (default) @ myproject ---
[INFO] Failsafe report directory: /Users/davea/Dropbox/workspace/myproject/target/failsafe-reports
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent!
[INFO] 
[INFO] --- jacoco-maven-plugin:0.6.2.201302030002:report (jacoco-site) @ myproject ---
[INFO] Skipping JaCoCo execution due to missing execution data file
[INFO] 

Une idée de la configuration qui me manque ?

0voto

tdrury Points 1179

L'exécution dit qu'elle met les données jacoco dans /Users/davea/Dropbox/workspace/myproject/target/jacoco.exec mais votre configuration maven cherche les données dans ${basedir}/target/coverage-reports/jacoco-unit.exec.

0voto

jpl Points 302

Ma réponse est très tardive mais pour les autres utilisateurs Dans votre cas, vous devez configurer le plugin failsafe pour utiliser la configuration de l'agent en ligne de commande enregistrée dans la variable itCoverageAgent. Par exemple

<configuration>
    <argLine>${itCoverageAgent}</argLine>
</configuration>

Dans votre configuration maven, jacoco prépare les arguments de la ligne de commande dans la phase prepare-agent, mais le plugin failsafe ne l'utilise pas donc il n'y a pas de fichier de données d'exécution.

0voto

Srini M Points 436

Parfois, l'exécution s'exécute la première fois, et lorsque nous faisons une installation propre de maven, elle ne se génère plus ensuite. Le problème était l'utilisation de true pour les propriétés skipMain et skip sous maven-compiler-plugin du fichier pom principal. Supprimez-les si elles ont été introduites dans le cadre d'un problème ou d'une suggestion.

0voto

Pavan Kumar Points 1745

Dans mon cas, l'agent chargé de la préparation avait une autre destFile dans la configuration, mais en conséquence, le rapport devait être configuré avec une dataFile mais cette configuration était absente. Une fois la dataFile a été ajouté, il a commencé à fonctionner correctement.

0voto

Stephan Points 10596

J'ai rencontré une erreur similaire car l'exécution des tests a été ignorée.

J'ai exécuté ma construction avec un paramètre système similaire : -Dmaven.test.skip.exec=true

En mettant ce paramètre système sur false a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X