标签: jacoco

使用Jacoco和Pax-Exam

我目前正在开发基于OSGi模型的应用程序.我的应用程序的所有测试过程都是通过使用Pax-Exam来完成的,它使用Karaf创建一个新的JVM.

我尝试使用Jacoco进行集成测试代码覆盖,但似乎没有用.当我使用它(使用maven插件)时,创建的jacoco.exec文件为空.

由于Pax-Exam正在创建一个新的JVM来通过Karaf进行测试,我使用javaagent设置了一个Pax-Exam选项,以便为将要进行测试的新JVM使用完全相同的arg行.不幸的是,它不起作用.

我已经尝试使用没有所有Pax-Exam/Karaf/OSGi部分的Jacoco并且它运行良好,但我不知道如何使它与我的OSGi包一起工作.

我希望有人可以帮忙!

java maven-plugin pax apache-karaf jacoco

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

jacoco + tomcat = jacoco.exec,报告零覆盖率.救命.

我在Tomcat上部署了一个Web应用程序.在我进一步了解详细信息之前,请先详细说明.

版本:jdk 1.7,Tomcat - 7.0.19,jacoco -0.5.6

我已将jdk1.7添加到Tomcat.在我添加的\ apache-tomcat-7.0.19\bin\startup.bat文件中.

SET JAVA_HOME=C:\ProgramFiles\Java\jdk1.7.0
Run Code Online (Sandbox Code Playgroud)

我还添加了jacoco代理到Tomcat.在apache-tomcat-7.0.19\bin\catalina.bat中我添加了.

SET JACOCO=-javaagent:<my download folder>\jacoco-0.5.6.201201232323\lib\jacocoagent.jar=destfile=C:\jacoco.exec,append=true,includes=* 
set JAVA_OPTS=%JAVA_OPTS% %JACOCO%
Run Code Online (Sandbox Code Playgroud)

现在,当我启动Tomcat并点击我的Web应用程序时,正如预期的那样,有一个C:\ jacoco.exec文件.

我现在已将代码移动到以下目录结构jacoco.exec/bin// coveragereport

现在我使用了http://www.eclemma.org/jacoco/trunk/doc/examples/java/ReportGenerator.java上的类ReportGenerator .我在/ coveragereport目录中收到了大量HTML格式的报告.但是,所有代码都显示为未触及.虽然在我启动了Tomcat之后,我已经去了http:// localhost:/并浏览了一下.我希望得到覆盖百分比报告.

我遗漏了一些非常基本的东西.请帮忙.

tomcat jacoco

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

使用错误的调用操作码进行Dalvik转换

我遇到了dalvik dex转换器和它用于调用方法的操作码的问题.基本上我有一个private final在我的类中定义的方法,并且在调用它时,而不是生成invoke-direct操作码,dx正在生成invoke-super.因为它是私有方法,所以超类上不存在该方法,因此我在设备上遇到VFY违规.我能够找到触发此事件的确切方案,并且似乎在以下情况下发生:

  1. 使用JaCoCo来测试课程,以及
  2. 编译的类 --target 1.6

如果满足这两个条件,则生成的dex类invoke-super代替invoke-direct.如果我禁用JaCoCo OR,如果我编译--target 1.5,它使用正确的invoke-direct操作码.

在查看javap反汇编的类代码时,我可以看到导致dx超级而不是直接的原因:

没有检测,编译为1.6:

$ javap -d com.example.ClassName | grep waitForConnectivity
159:    invokespecial   #115; //Method waitForConnectivity:()V
$ dexdump -d classes.dex | grep waitForConnectivity
147ad8: 7010 6042 0200           |001e: invoke-direct {v2}, Lcom/example/ClassName;.waitForConnectivity:()V // method@4260
Run Code Online (Sandbox Code Playgroud)

检测,编译为1.5(--target 1.5):

$ javap -d com.example.ClassName | grep waitForConnectivity
235:    invokespecial   #115; //Method waitForConnectivity:()V
$ dexdump -d classes.dex | …
Run Code Online (Sandbox Code Playgroud)

android dalvik jacoco

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

将JaCoCo与SONAR集成,以实现单元和集成测试覆盖

有没有人试过配置JaCoCo来将单元和集成测试的覆盖范围转储到2个不同的文件中,让SONAR使用它们,使用ANT构建?

java ant jacoco sonarqube

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

org.sonar.api.utils.SonarException:无法在org.sonar.api.resources.File上添加两次相同的度量

我有一个Jenkins Job,它在一个由几个模块组成的Maven项目上运行SonarRunner.配置SonarRunner导入Cobertura覆盖率报告时,构建失败.

SonarQube Runner 2.4
Java 1.7.0_55 Oracle Corporation (64-bit)
Windows 7 6.1 amd64
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: C:\Jenkins\tools\hudson.plugins.sonar.SonarRunnerInstallation\Sonar_Runner\conf\sonar-runner.properties
INFO: Project configuration file: NONE
INFO: Default locale: "en_US", source code encoding: "windows-1252" (analysis is platform dependent)
INFO: Work directory: C:\Jenkins\workspace\Sprint3\Application\.sonar
INFO: SonarQube Server 4.3
11:07:44.407 INFO  - Load batch settings
11:07:44.609 INFO  - User cache: C:\.sonar\cache
11:07:44.625 INFO  - Install plugins
11:07:44.765 INFO  - Install JDBC driver
11:07:44.781 WARN  - H2 database should be …
Run Code Online (Sandbox Code Playgroud)

java cobertura jenkins jacoco sonarqube

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

我们可以在测试运行失败时获得jacoco报告

测试运行失败时,我们可以获得jacoco报告吗?

  1. 在执行测试期间,如果测试失败,那么我们是否能够继续并创建报告?
  2. 如果有任何方法在我们手动执行时创建.exec文件

谢谢,

code-coverage jacoco

5
推荐指数
0
解决办法
285
查看次数

用逻辑或(||)测试if语句的覆盖率-由于Java的短路,JaCoCo要我覆盖的第四个条件是什么?

这可能是一个相当简单的问题,但我很茫然。

我有一个if语句,如下所示:

if(TheEnum.A.equals(myEnum) || TheEnum.B.equals(myEnum))
Run Code Online (Sandbox Code Playgroud)

TheEnum可以ABC,... G(不止4个选项)。

JaCoCo(SONAR)告诉我这里有四个条件。那些是什么?从本质上讲,我不是可以测试的整套设备

if(true || not_evaluated) => true
if(false || true) => true
if(false || false) => false
Run Code Online (Sandbox Code Playgroud)

我敢肯定我不能专门测试 if(true || true)if(true || false),因为短路评估不会那么远...?

如果是这样,JaCoCo / Sonar要我测试的第四个选项是什么?

java short-circuiting jacoco test-coverage sonarqube

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

如何从jacoco代码覆盖率中排除一行?

我如何inputStream.close()从pom.xml或Java代码中的jacoco代码覆盖率中排除?

public void run() {
    InputStream inputStream = null;
    try {
        inputStream = fileSystem.newFileInputStream(file);
    }
    finally {
        if(inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java jacoco jacoco-maven-plugin

5
推荐指数
2
解决办法
1190
查看次数

如何为JAR文件生成JaCoCo报告?

我们正在尝试使用JaCoCo报告针对预打包JAR文件的测试代码覆盖率。为此,我们使用java -jar附加参数启动JAR文件:

-javaagent:${project.basedir}/tools/jacocoagent.jar=output=tcpserver,port=${jacoco.port}
Run Code Online (Sandbox Code Playgroud)

JaCoCo的Maven插件配置为转储执行文件并报告结果:

-javaagent:${project.basedir}/tools/jacocoagent.jar=output=tcpserver,port=${jacoco.port}
Run Code Online (Sandbox Code Playgroud)

这样做的目的jacoco.exec是生成一个非零大小(〜350kB)的文件。

但是该报告没有显示任何内容。通过“会话”链接,我可以看到列出的JAR中的类,但是报告的主页显示了这一点: JaCoCo报告

根据日志,我们似乎正在执行代码。JaCoCo设置中缺少步骤还是应该起作用?

java code-coverage jacoco jacoco-maven-plugin

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

SonarQube分支机构覆盖率

可以在SonarQube中获取非主分支的代码覆盖率详细信息吗?我看到的其他分支的唯一两个标签是IssuesCode。我为每个分支运行相同的Gradle JaCoCo / Sonar命令:

./gradlew report sonarqube -Dsonar.branch.name=${BITBUCKET_BRANCH} -Dsonar.organization=${SONARQUBE_ORG} -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=${SONARQUBE_KEY}
Run Code Online (Sandbox Code Playgroud)

我正在使用PowerMockito,所以我需要报告任务完成的类检测。

我们将Java,Gradle和JaCoCo与Sonar结合使用。

gradle jacoco sonarqube

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