[英]Does jacoco agent report code coverage for another agent's premain
對於針對代理運行測試的場景,並且Jacoco代理已針對該目標代理進行檢測。 jacoco是否會報告目標代理的premain方法的代碼覆蓋率?
Javaagent按照在命令行上指定的順序應用。 如果首先指定了JaCoCo代理,則其檢測將應用於之后的所有代理。
因此,如果要包括Java代理更改或添加的任何代碼的覆蓋范圍,則應將它們放在JaCoCo之后。
JaCoCo代理會檢測並記錄其后加載的類的執行。 Java代理按在命令行上指定的順序加載。 因此,如果在JaCoCo代理之后指定了第二個代理,則JaCoCo將對其進行檢測並記錄其執行。 這是示例:
代理src/main/java/Premain.java
:
import java.lang.instrument.Instrumentation;
public class Premain {
public static void premain(String args, Instrumentation inst) {
System.out.println("Hello world");
}
}
一個空的測試src/test/java/Test.java
只是為了能夠與其一起執行代理,而不能直接執行代理的代碼:
import org.junit.Test
public class Test {
@Test
public void test() {
}
}
pom.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<properties>
<argLine>-javaagent:target/${project.build.finalName}.jar</argLine>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifestEntries>
<Premain-Class>Premain</Premain-Class>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.9</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<!-- to be able to use agent that was built -->
<id>default-test</id>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
執行mvn clean jacoco:prepare-agent verify jacoco:report
將在目錄target/site/jacoco
生成報告:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.