标签: jacoco-maven-plugin

Jacoco代理在远程机器上进行集成测试

我正在使用maven和jacoco-maven-plugin进行测试覆盖率报告

我需要将jacoco-agent配置为远程计算机(Linux),我正在运行运行集成测试的脚本

我怎么做到的?

这是我试过的:

                    <execution>
                        <id>prepare-agent-integration</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>prepare-agent-integration</goal>
                        </goals>
                        <configuration>
                            <destFile>${sonar.jacoco.itReportPath}</destFile>
                            <jacoco.address>172.X.X.X</jacoco.address><!-- This is the machine where integration tests runs-->
                            <jacoco.port>22</jacoco.port>
                        </configuration>
                    </execution>

                    <execution>
                        <id>report-integration</id>
                        <goals>
                            <goal>report-integration</goal>
                        </goals>
                        <configuration>
                            <dataFile>${sonar.jacoco.itReportPath}</dataFile>
                            <outputDirectory>${project.basedir}/target/site/jacoco-it</outputDirectory>
                        </configuration>
                    </execution>
Run Code Online (Sandbox Code Playgroud)

code-coverage maven-3 maven jacoco jacoco-maven-plugin

2
推荐指数
1
解决办法
3002
查看次数

如何从 jacoco.exec 生成 HTML 报告?

我们有一个包含子模块的 Maven 项目。有一个父 pom.xml 并且每个子项目都被制作成一个 war 文件。每个子模块都有单元测试用例和从 Jacoco 生成的报告。

现有报告显示单个模块的单元测试覆盖率,但我们需要在 Tomcat 上提供集成测试范围的代码覆盖率。我们所做的是在 Tomcat 文件夹中安装 jacoco 代理并将其配置为生成 jacoco.exec。当我使用 EclEmma 插件导入 jacoco.exec 时,我们会看到代码覆盖率。

有没有办法在没有源代码的情况下从独立的 jacoco.exec 生成报告?

eclipse jacoco jacoco-maven-plugin

2
推荐指数
1
解决办法
5038
查看次数

Jacoco-忽略MyClass.1

如何在Jacoco涵盖范围中忽略* .1类?

我的POM中包含以下内容:

<execution>
  <id>JaCoco Coverage Enforcement</id>
  <phase>verify</phase>
  <goals>
    <goal>check</goal>
  </goals>
  <configuration>
  <dataFile>${project.build.directory}/coverage-reports/jacoco-unit.exec</dataFile>
  <excludes>
    <exclude>**/MyClass.**</exclude>
  </excludes>
  <rules>
    ...
  </rules>
</execution>
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

[警告] com.mypackage.MyClass.1类违反了规则:行覆盖率是0.00,但预期最小值是0.85

更新12/19

这是文件夹结构中的内容:

$ find . -iname 'MyClass*class'
./target/classes/com/mypackage/MyClass$1.class
./target/classes/com/mypackage/MyClass.class
Run Code Online (Sandbox Code Playgroud)

java jacoco jacoco-maven-plugin

2
推荐指数
1
解决办法
529
查看次数

Maven中的pluginManagement范围和reporting.plugins.plugin.version缺少警告

我的Maven项目给了我report.plugins.plugin.version这样的警告:

[WARNING] Some problems were encountered while building the effective model for com.example:test:jar:1.0-SNAPSHOT
[WARNING] 'reporting.plugins.plugin.version' for org.jacoco:jacoco-maven-plugin is missing. @ line 10, column 21
Run Code Online (Sandbox Code Playgroud)

我知道Maven 3 对插件版本更严格,必须指定插件版本.我在pluginManagement中指定了该版本:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.2.201409121644</version>
        </plugin>
    </plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)

当我使用插件时,这工作正常,没有警告build/plugins:

<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用reporting/plugins:

<reporting>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)

我的问题是:指定的版本范围是否build/plugingManagement仅限于<build>标签内?我可以修复警告而不在两个地方复制插件版本吗?


以下是生成警告的完整示例:

<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging> …
Run Code Online (Sandbox Code Playgroud)

java plugins maven jacoco-maven-plugin

1
推荐指数
1
解决办法
1014
查看次数

缺少Jacoco代码覆盖率和IncompatibleClassChangeError

我有一个带有一些Arquillian测试的maven项目(包括无人机/石墨烯测试).

当我使用maven构建我的项目时,所有使用Graphene和Drone或Warp的Arquillian测试将失败并出现以下异常

Running de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.862 sec <<< FAILURE! - in de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest
de.mmo.arq.model.diverses.stammdaten.geldinstitut.GeldinstitutBlzTest  Time elapsed: 4.862 sec  <<< ERROR!
org.jboss.shrinkwrap.api.exporter.ArchiveExportException: Failed to write asset to output: /WEB-INF/classes/de/mmo/base/dao/CrudService.class
Caused by: java.lang.IncompatibleClassChangeError: class org.jacoco.core.internal.flow.ClassProbesVisitor has interface org.objectweb.asm.ClassVisitor as super class
Run Code Online (Sandbox Code Playgroud)

这是魔法应该发生的地方

<build>
    <finalName>browser</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tagBase>...</tagBase>
                <useReleaseProfile>false</useReleaseProfile>
            </configuration>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>jacoco</id>
        <dependencies>
            <dependency>
                <groupId>org.jacoco</groupId>
                <artifactId>org.jacoco.core</artifactId>
                <scope>test</scope> …
Run Code Online (Sandbox Code Playgroud)

java maven jboss-arquillian arquillian-drone jacoco-maven-plugin

1
推荐指数
1
解决办法
1125
查看次数

Maven jacoco 排除不起作用

 <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.0</version>
                <configuration>
                    <!-- remove haltOnFailure to purposely fail build once we recover coverage back to 70% -->
                    <haltOnFailure>false</haltOnFailure>
                    <rules>
                        <rule>
                            <element>CLASS</element>
                            <limits>
                                <limit>
                                    <counter>LINE</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0.70</minimum>
                                </limit>
                                <limit>
                                    <counter>BRANCH</counter>
                                    <value>COVEREDRATIO</value>
                                    <minimum>0.70</minimum>
                                </limit>
                            </limits>
                            <excludes>
                                <!-- exclude domain objects -->
                                <exclude>com/path/to/classes/**/*</exclude>                               
                            </excludes>
                        </rule>
                    </rules>
                </configuration>
                <executions>
                    <execution>
                        <id>default-prepare-agent</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>check</id>
                        <goals>
                            <goal>check</goal>
                            <goal>report</goal>
                        </goals>
                        <phase>verify</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
Run Code Online (Sandbox Code Playgroud)

预期行为: target/site/jacoco/index.html 中的 HTML 报告不包含 com/path/to/classes 行

实际行为: target/site/jacoco/index.html 中的 HTML 报告包含一行 com/path/to/classes 导致覆盖率报告为(在我的情况下)32%,证明包含此包并且不应该 …

configuration maven jacoco jacoco-maven-plugin

1
推荐指数
1
解决办法
4706
查看次数

Jacoco 不生成覆盖率报告

我正在使用 maven-sure fire 插件来执行测试和 Jacoco 插件来生成覆盖率报告。Jacoco 不提供覆盖率报告,而是通过调试日志失败,如下所示。

[INFO] --- jacoco-maven-plugin:0.8.0:report (jacoco-site) @ util --- [INFO] 由于缺少执行数据文件而跳过 JaCoCo 执行。

以下是 maven sure-fire 插件的外观。

             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.10</version>
                <configuration>
                    <parallel>classes</parallel>
                     <threadCount>8</threadCount>
                     <forkCount>4</forkCount>
                     <encoding>UTF-8</encoding>
                    <inputEncoding>UTF-8</inputEncoding>
                    <outputEncoding>UTF-8</outputEncoding>
                    <argLine>-Xms256m -Xmx512m -XX:MaxPermSize=128m -ea
                        -Dfile.encoding=UTF-8</argLine>
                     </configuration>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

这是 Jacoco 插件的样子。

<plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.8.0</version>
                <configuration>
                    <destFile>${basedir}/target/coverage-reports/jacoco-unit.exec</destFile>
                    <dataFile>${basedir}/target/coverage-reports/jacoco-unit.exec</dataFile>
                </configuration>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>package</phase>
                        <goals>
                        <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

maven maven-surefire-plugin jacoco jacoco-maven-plugin

1
推荐指数
1
解决办法
2434
查看次数

如何在服务器上执行 webApplication 时获取 JaCoCo 检测代码覆盖率

当我在实时应用程序上执行某些场景时,即当应用程序在服务器中运行时,我想获得代码覆盖率报告(或跟踪应用程序的控制器流程),因此我参考了官方Jacoco 文档并按照以下方式执行

第一步,我尝试将 jacoco 代理绑定到应用程序运行端口

export MAVEN_OPTS=-javaagent:/home/user/.m2/repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runtime.jar=includes=*,output=tcpserver,port=6300,address=*,dumponexit=true  
Run Code Online (Sandbox Code Playgroud)

然后我启动了服务器并执行了一些测试场景,当时我还请求 jacoco 通过执行以下命令来获取转储

 mvn jacoco:dump
Run Code Online (Sandbox Code Playgroud)

当我首先执行上面的命令时,它显示如下java.net.BindException: Address already in use,然后它打印为休闲

[INFO] Connecting to localhost/127.0.0.1:6300
Run Code Online (Sandbox Code Playgroud)

当我停止服务器时,在我请求通过执行以下命令生成 jacoco 报告后,jacoco.exec已生成到已知位置

mvn jacoco:report
Run Code Online (Sandbox Code Playgroud)

最后我收到了报告,但当我打开 index.html 页面时,它显示了0%覆盖范围。

您可以通过以下示例 Spring MVC 项目重现我的困难

请从 Github下载 Spring MVC 项目https://github.com/mkyong/spring4-mvc-ajax-example

就我而言,我使用 WildFly 8.x 服务器来运行项目并将以下依赖项添加到下载的项目 pom.xml

 maven-surefire-plugin of 2.19.1 version
 jacoco-maven-plugin of 0.7.4.201502262128 version 
 junit of 4.12 version
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令清理并构建项目。

mvn clean install
Run Code Online (Sandbox Code Playgroud)

完成后,从项目的目标文件夹中获取 .war 文件并将其保存在 wildflyserverwildfly-9.0.0.CR2/standalone/deployments/文件夹中

部署 .war 后,转到/wildfly-9.0.0.CR2/bin/文件夹并执行/运行该./standalone.sh文件,或者根据平台,您可以运行该 …

jacoco test-reporting jacoco-maven-plugin

0
推荐指数
1
解决办法
3694
查看次数