Tag: jacoco

如何使用Android gradle插件0.10.0或更高版本获得jacoco覆盖率报告?

我正在尝试使用Gradle Android插件0.10.2来获得testing覆盖率报告。 但是运行一些testing后我仍然无法获得覆盖报告。 (connectedAndroidTest)。 我的主要模块的build.gradle是: apply plugin: 'android' android { compileSdkVersion 19 buildToolsVersion "19.0.3" defaultConfig { minSdkVersion 8 targetSdkVersion 19 versionCode 1 versionName "1.0" } buildTypes { debug { testCoverageEnabled true } release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:19.+' } 而项目构buildgradle的buildscript部分是: buildscript { […]

Jacoco和unit testing使用android-gradle-plugin代码覆盖> = 1.1

我最近开始在我的一个项目中集成android-gradle-plugin 1.1.0。 该项目使用robolectric 2.4来运行unit testing。 这是一个具有非常复杂的依赖关系的多模块项目(一些模块依赖于其他模块)。 类似的东西: –> application-module (dependsOn: module1, module2, module-core) –> module1 (dependsOn: module-core) –> module2 (dependsOn: module-core) –> module-core (dependsOn: module3, module4) –> module3 (library dependencies) –> module4 (library dependencies) 要获得更清晰的图片,请参阅jacoco示例项目。 我试图整合JaCoCo为unit testing生成报告,但在我看来,它只运行基本上是仪器testing的androidTests 。 在Google之后,我遇到了GitHub和其他文章中的一些项目,但是他们主要关注的是以前版本的android-gradle-plugin或者正在使用其他第三方插件,比如android-unit-test 。 可能是我失去了我的能力谷歌。 但有人可以指向我的方向,我可以find一些关于在Android的gradle插件的新东西的文件,以及如何运行的unit testingjacoco任务? UPDATE 通过nenick的例子的脚本: apply plugin: "jacoco" configurations { jacocoReport } task jacocoReport(dependsOn: 'testDebug') […]

执行JaCoCo时是否因执行数据文件丢失而跳过JaCoCo?

我正在使用Maven 3.0.3,JUnit 4.8.1和Jacoco 0.6.3.201306030806,并试图创buildtesting覆盖率报告。 我只有一个unit testing的项目,但我不能得到报告运行,反复得到错误Skipping JaCoCo execution due to missing execution data file当我运行时: mvn clean install -P test-coverage 这是我的POM如何configuration: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.14.1</version> <configuration> <reuseForks>true</reuseForks> <argLine>-Xmx2048m</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.14.1</version> <configuration> <reuseForks>true</reuseForks> <argLine>-Xmx4096m -XX:MaxPermSize=512M ${itCoverageAgent}</argLine> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> … <profile> <id>test-coverage</id> <build> <plugins> <plugin> <groupId>org.jacoco</groupId> […]

在maven中不能使用jacoco JVM参数和surefire JVM参数

我正在使用jacoco插件的maven生成代码覆盖率度量。 我在使用jacoco插件所需的java选项configurationsurefire插件时遇到一些困难。 我已经看到了堆栈溢出已经有一些答案,但有些不适合我。 我有一个多模块项目,我的一个模块configurationsurefire插件如下: foo/pom.xml : <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>-XX:MaxPermSize=512m</argLine> </configuration> </plugin> </plugins> 这按预期工作。 现在我想包含jacoco来获取代码覆盖度量,所以我添加了一个CodeCoverageconfiguration文件来处理所有的jacococonfiguration: parent/pom.xml : <profile> <id>CodeCoverage</id> <build> <pluginManagement> <plugins> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <executions> <execution> <id>jacoco-initialize</id> <goals><goal>prepare-agent</goal></goals> <configuration> <propertyName>surefire.argLine</propertyName> </configuration> … </execution> <executions> </plugin> </plugins> </pluginManagement> </build> </profile> 在这里可以看到,如果指定了CodeCoverageconfiguration文件,那么将jacoco插件configuration为使用surefire.argLine属性,并且该属性用于configurationargLine插件的argLine 。 然后,我更新了foo模块的pom.xml文件,以使用由jacoco插件生成的surefire.argLine属性: foo/pom.xml : <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <argLine>${surefire.argLine} -XX:MaxPermSize=512m</argLine> </configuration> […]

Jacoco与Gradle 0.10.0:远程对象不存在

更新2014年10月21日:该问题已被确认为使用buildtools 21修复。 更新2014年9月18日:该问题的状态已更新为FutureRelease 。 更新:我听说这可能不适用于匕首,而且由于浓咖啡使用匕首,它可能会导致一些问题。 一个错误提交给Gradle团队。 谷歌最近更新了他们的Gradle执行到0.10.0 。 他们现在提供的一件事是Jacoco的支持。 要做到这一点,他们提到设置以下内容: testCoverageEnabled = true 进入你的构buildtypes。 现在,当我运行Espressotesting(使用connectedCheck )时,我开始运行:connectedAndroidTest任务时遇到了错误: Tests on HTC One – 4.2.2 – API 17 – 1080×1920 – 4.2.2 failed: Instrumentation run failed due to 'java.lang.VerifyError' 01:38:31 E/Device: Error during Sync: Remote object doesn't exist! null java.io.IOException: com.android.ddmlib.SyncException: Remote object doesn't exist! at com.android.builder.testing.ConnectedDevice.pullFile(ConnectedDevice.java:114) at […]

使用Gradle过滤JaCoCo覆盖报告

问题: 我有一个与jacoco项目,我想能够过滤某些类和/或包。 相关文件: 我已阅读以下文件: 官方的jacoco网站: http : //www.eclemma.org/jacoco/index.html 官方jacoco文档gradle : https : //gradle.org/docs/current/userguide/jacoco_plugin.html 官方jacoco Github问题,覆盖范围: https : //github.com/jacoco/jacoco/wiki/FilteringOptions https://github.com/jacoco/jacoco/issues/14 相关的StackOverflow链接: JaCoCo&Gradle – 过滤选项 (无答案) 从Jacoco报告中使用Sonarrunner和Gradle排除软件包 (不使用声呐 ) JaCoCo – 从报告中排除JSP (这似乎为maven工作,我使用gradle ) Maven的Jacococonfiguration – 排除报告不工作的类/包 (这似乎为maven工作,我使用gradle ) JaCoCo gradle插件排除 (不能得到这个工作) Gradle Jacoco – 覆盖报告包括configuration中排除的类 (看起来非常接近,它使用doFirst ,不适用于我) 我曾经尝试过的例子: apply plugin: 'java' apply plugin: 'jacoco' buildscript { […]

8个分支机构尝试使用资源 – 可能覆盖雅可比?

我有一些使用资源尝试的代码,在jacoco它只是覆盖了一半。 所有的源代码行都是绿色的,但是我得到一个黄色的小符号,告诉我只有8个分支中的4个被覆盖。 我很难搞清楚所有分支是什么,以及如何编写覆盖它们的代码。 三个可能的地方抛出PipelineException 。 这些是createStageList() , processItem()和隐含的close() 不抛出任何例外, 从createStageList()引发exception 从processItem()引发exception 抛出close()的exception 从processItem()和close()引发exception 我想不出任何其他情况,但我仍然只有8个中的4个被覆盖。 有人可以向我解释为什么它是8的4,并有无论如何击中所有8个分支? 我不擅长decyrpting /阅读/解释字节码,但也许你是… :)我已经看到https://github.com/jacoco/jacoco/issues/82 ,但既不是它也不是问题它引用非常多的帮助(除了注意到这是由于编译器生成的块) 嗯,正如我写完这篇文章,我想到了什么情况下可能不会被我上面提到的testing…我会发布一个答案,如果我说得对。 我相信这个问题,这个答案在任何情况下都会帮助别人。 编辑:不,我没有find它。 抛出RuntimeExceptions(不由catch块处理)不包括更多的分支

Testng,Emma,Cobertura,覆盖率和JDK 7导致ClassFormatError和VerifyError

我已经切换到最新的JDK 7,并且我正在对由emma覆盖工具弄乱的字节码进行testngunit testing。 我的testing用例都没有正确运行,而且其中大部分我都收到这样的错误。 java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.<init>(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42) 我在这里find了一篇文章JSR 292 Goodness Fast Code Coverage Toolless于10k ,这就是说“JSR 292引入了一个新的字节码指令invokedynamic,而且还有一些新的常量池常量,这意味着大多数parsing字节码的工具就像ASM,BCEL,findbugs或EMMA将需要更新为Java 7兼容。“ 检查了Emma主页,但看起来好像很久没有更新了。 有没有人解决过类似的问题? 我也尝试过Cobertura。 它看起来更好一些,但是我得到了许多typesVerifyError的exception。 java.lang.VerifyError: Expecting a stackmap frame at branch target 85 in method measurement.meter.AbstractSerialPortMeter.close()V at offset 26 at measurement.meter.AbstractSerialPortMeterTest.setUp(AbstractSerialPortMeterTest.java:27)

JaCoCo SonarQube不兼容版本1007

我使用SonarQube进行代码质量控制,并突然build立,否则将无法分析和失败。 [INFO] [00:00:03.630]分析/mySuperProject/target/jacoco.exec – > java.io.IOException:不兼容的版本1007 当我用debugging开关调用Maven构build时,这个原因就显示出来了 Caused by: java.io.IOException: Incompatible version 1007. at org.jacoco.core.data.ExecutionDataReader.readHeader(ExecutionDataReader.java:127) at org.jacoco.core.data.ExecutionDataReader.readBlock(ExecutionDataReader.java:107) at org.jacoco.core.data.ExecutionDataReader.read(ExecutionDataReader.java:87) at org.sonar.plugins.jacoco.AbstractAnalyzer.readExecutionData(AbstractAnalyzer.java:134) at org.sonar.plugins.jacoco.AbstractAnalyzer.analyse(AbstractAnalyzer.java:107) 在检查jacoco的ExecutionDataReader时,我发现这个exception是从中抛出的 if (version != ExecutionDataWriter.FORMAT_VERSION) { throw new IOException(format("Incompatible version %x.",Integer.valueOf(version))); } 并从ExecutionDataWriter我发现了 /** File format version, will be incremented for each incompatible change. */ public static final char FORMAT_VERSION = 0x1007; […]

如何configuration多模块Maven + Sonar + JaCoCo提供合并报道报告?

我已经search了这个互联网上下。 有很多半的答案,与Maven属性(如${sonar.jacoco.reportPath}或org.jacoco:jacoco-maven-plugin:prepare-agent或设置maven-surefire-plugin argLine maven-surefire-plugin argLine和-javaagent 。 一些如何,这些答案,无论是自己,还是组合,正在产生我所追求的:一个覆盖报告,显示一个类,如果它被用于堆栈中较高的testing,如正在使用的实体通过DAO,即使它没有被自己的模块中的testing完全覆盖。 有没有一个确定的configuration,为了达到这个目的?