小编God*_*din的帖子

Jacoco仅针对单个测试类生成覆盖率报告

那么让我们说我有一个测试

@Test
public void testA(){
    new A().doSomthing();
}
Run Code Online (Sandbox Code Playgroud)

让我们说它涵盖了一个方法doSomething(),现在在我的项目中,我有1000万个测试,而这个测试只是其中之一.一个小小的测试做得不多.

现在让我们说我的doSomething方法如下: -

public void doSomething() {
    if (var1)
        killMylSelf();
    else if (var2)
        killMyMother();
    else
        killMySelfAndMyMother();
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到方法中有很多分支,因此调用其他具有更多分支的方法.当我跑步时,testA我希望看到我在执行的代码中错过了哪些分支,如何在不运行所有单元测试的情况下实现这一点,而且只关注我关注的测试,

当你回答这个问题而没有运行所有的单位测试时,请记住这些神奇的单词,而且只关注我关心的测试

java android unit-testing gradle jacoco

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

使用 Maven 3.5 运行 jacoco 检查目标

我在 pom 中的 jacoco 插件配置如下

<plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.5.201505241946</version>
              <executions>
                <execution>
                  <id>pre-unit-test</id>
                  <goals>
                      <goal>prepare-agent</goal>
                  </goals>
                  <configuration>
                    <destFile>${jacoco.ut.execution.data.file}</destFile>
                  </configuration>
                </execution>
                <execution>
                  <id>merge-execs</id>
                  <phase>pre-site</phase>
                  <inherited>false</inherited>
                  <goals>
                      <goal>merge</goal>
                  </goals>
                  <configuration>
                   <fileSets>
                     <fileSet>
                       <directory>${basedir}</directory>
                       <includes>
                         <include>**/target/*.exec</include>
                       </includes>
                     </fileSet>
                   </fileSets>
                    <destFile>${jacoco.ut.merged.exec}</destFile>
                  </configuration>
                </execution>
                  <execution>
                      <id>jacoco-check</id>
                      <phase>verify</phase>
                      <goals>
                          <goal>check</goal>
                      </goals>
                      <configuration>
                          <rules>
                              <rule>
                                  <element>BUNDLE</element>
                                  <limits>
                                      <limit>
                                          <counter>LINE</counter>
                                          <value>COVEREDRATIO</value>
                                          <minimum>0.80</minimum>
                                      </limit>
                                  </limits>
                              </rule>
                          </rules>
                          <dataFile>${jacoco.ut.merged.exec}</dataFile>
                      </configuration>
                  </execution>
             </executions>
         </plugin>
Run Code Online (Sandbox Code Playgroud)

但是当我运行时mvn jacoco:check它失败并出现以下错误

[ERROR] Failed to execute goal org.jacoco:jacoco-maven-plugin:0.7.5.201505241946:check (default-cli) on project main: The parameters 'rules' for …
Run Code Online (Sandbox Code Playgroud)

java maven jacoco jacoco-maven-plugin

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

运行时转储执行数据

我正在使用 JaCoCo 生成代码覆盖率报告,并且我有许多场景需要生成单独的报告。问题是该程序非常庞大,大约需要 2 分钟才能启动并加载所有类文件。

我想在其中一个场景完成后立即获取运行时的执行数据,然后开始下一个场景,而不是为每个场景重新启动服务器。

有办法这样做吗?

code-coverage jacoco

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

如何为“jacoco-check”指定特定的包?

我的项目是使用 Maven 构建的。我使用“Jacoco”插件来执行质量检查。

对于一个项目,我想在线检查测试覆盖率。我只想检查仅 3 个包裹的线路覆盖率。如何指定此检查?

我尝试“包括”一些软件包,但这不起作用。我还尝试包含根包级别并排除许多其他包。也不工作。

我如何检查包裹 A、B 和 C?请参阅下面的示例:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.9</version>
    <executions>
      ...
      <execution>
        <id>jacoco-check</id>
        <goals>
          <goal>check</goal>
        </goals>
        <configuration>
          <rules>
            <rule>
              <element>PACKAGE</element>
              <includes>
                <include>nl.abc.xyz.package-a.**</include>
                <include>nl.abc.xyz.package-b.**</include>
                <include>nl.abc.xyz.package-c.**</include>
              </includes>
              ... 
              <limits>
                <limit>
                  <counter>LINE</counter>
                  <value>COVEREDRATIO</value>
                  <minimum>0.30</minimum>
                </limit>
              </limits>
            </rule>
          </rules>
        </configuration>
      </execution>
    </executions>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

jacoco jacoco-maven-plugin

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

如何忽略java核心断言的覆盖,Eclipse Eclemma

我有一个关于Eclemma插件配置的问题:在生产代码中我有很多java核心断言,比如:

assert arr.size() == 2 : "message";
Run Code Online (Sandbox Code Playgroud)

当我在单元测试中运行Eclemma时,由于断言上的黄色标记,它显示低覆盖率.放置断言的想法不是有可能以断言的负面情况结束(它永远不会发生!),它们只是代码质量保护,仅此而已.但另一方面,Eclemma认为这些否定案例并未涵盖声明的分支(这是marazmatic :)),因此它将它们标记为黄色.

那么,问题是:如何配置Eclemma忽略覆盖率报告中的"断言"代码行?

junit ignore assertions jacoco eclemma

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

如何在Eclipse中的代码上显示覆盖颜色?

我使用覆盖模式运行我的应用程序,但是文件的代码上没有颜色。是否有宏(或其他解决方案)来显示 Eclipse 中的覆盖颜色?

java eclipse code-coverage eclemma

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

EclEmma代码覆盖率忽略Junit测试

我发现在JUnit测试中没有检查代码覆盖率的唯一方法是右键单击包,选择Coverage as ...,然后选择配置.然后我可以取消我的测试包.我曾尝试各种可能的组合,排除测试的常规首/ JAVA /代码覆盖下/排除并没有看到任何变化.我总是把我的测试放在一个单独的测试源文件夹中,其包名与我的src代码相同.

我是否真的必须配置每个项目以忽略我的JUnit测试?这似乎是多余的.为什么有人想检查测试的覆盖范围?

java eclipse junit4 eclemma

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

如何将JaCoCo Gradle插件与TestNG和JUnit一起使用?

我正在开发一个项目,我们正在使用TestNG和JUnit进行测试.

不幸的是,在编写TestNG测试时,他们不会在JaCoCo Coverage报告中考虑.

我写了一个testng.gradle文件,我将其包含在每个build.gradle文件中(这是一个多模块项目):

task testNG(type: Test) { useTestNG() }
test.dependsOn testNG
Run Code Online (Sandbox Code Playgroud)

JUnit和TestNG测试都以这种方式工作.

如果我写testng.gradle这样的话:

test {
    useTestNG()
}
Run Code Online (Sandbox Code Playgroud)

JaCoCo工作正常,但显然只有TestNG测试才能执行.

我该如何解决?这是Gradle的JaCoCo插件中的错误吗?

junit testng gradle multi-module jacoco

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

使用 Jacoco 进行集成测试的代码覆盖率

我将jacocoagent.jar0.8.1 版作为 Java 代理传递,以将服务器上的代码覆盖率记录到我的服务器启动脚本中。但是我看到 jar 中缺少 Pre-main 类属性,因此,我收到以下错误:

Error occurred during initialization of VM
Failed to find Premain-Class manifest attribute in 
/u01/jetty_home/jacoco/jacocoagent.jar
agent library failed to init: instrument.
Run Code Online (Sandbox Code Playgroud)

有没有人有关于如何解决这个问题的想法?

jacoco

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

如何在服务器上执行 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
查看次数

jacoco.xml 与 jacocoTestReport.xml

在我的 gradle 项目中,我没有jacocoTestReport.xml 使用jacoco.xml. jacoco.xml和 之间有什么区别jacocoTestReport.xml

在 Google 上,这两个文件之间的区别尚不清楚。

PS:我问的原因是Code Climate需要一个jacoco.xml代码覆盖率文件。

gradle jacoco

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