[JAVA] Introduction de jacoco

Introduisez jacoco pour obtenir une couverture lors de l'exécution de TestNG.

Mécanisme d'acquisition de couverture

Je n'ai touché que jacoco et Cobertura, mais les deux ont le flux suivant. Je ne connais pas les détails.

Par conséquent, il serait très décevant de créer une archive basée sur le fichier de classe réécrit par instrument. S'il vous plaît soyez prudente.

Préparation

Maven est facile. Il est possible de mesurer l'instrumentation à la volée au moment de l'exécution, mais dans certains cas, la couverture était de 0% lors de l'utilisation de PowerMock. Par conséquent, nous avons adopté la méthode (instrumentation hors ligne) de modification préalable du fichier de classe.

J'utilise NetBeans IDE 8.2 cette fois, mais j'ai osé installer l'ancienne version 0.8.1 car le rapport de résultat ne s'affichait pas correctement à cause d'un bug côté IDE.

pom.xml(dependencies)


<dependency>
    <!--L'instrument hors ligne ne fonctionne pas sans lui-->
    <groupId>org.jacoco</groupId>
    <artifactId>org.jacoco.agent</artifactId>
    <version>0.8.1</version>
    <scope>test</scope>
    <classifier>runtime</classifier>
</dependency>

pom.xml(build/plugins)


<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
        <systemPropertyVariables>
            <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
        </systemPropertyVariables>
        <!--↓ Sans cela, la trace de la pile n'apparaîtra pas-->
        <trimStackTrace>false</trimStackTrace>
    </configuration>
</plugin>
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <!-- 0.8.2 @NetBeans IDE 8.S'il est égal à 2, la "couverture du code" n'est pas enregistrée-->
    <version>0.8.1</version>
    <executions>
        <execution>
            <id>default-instrument</id>
            <goals>
                <goal>instrument</goal>
            </goals>
        </execution>
        <execution>
            <id>default-restore-instrumented-classes</id>
            <goals>
                <goal>restore-instrumented-classes</goal>
            </goals>
        </execution>
        <execution>
            <id>default-report</id>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Essai

Testez-le dans Maven et lorsque vous avez terminé, «affichez le rapport» dans votre couverture de code.

Recommended Posts

Introduction de jacoco
Rails6 jQuery introduit