更新2014年10月21日: 通过使用buildtools 21确认该问题已得到修复.
UPDATE 2014年9月18日:
在本期的状态已经更新到FutureRelease.
更新: 我听说这可能不适用于Dagger,而且由于Espresso使用Dagger,它可能会导致一些问题.向 Gradle团队提交了一个错误.
Google最近将其Gradle实施更新为0.10.0.他们现在提供的一件事是Jacoco支持.为此,他们提到了以下设置:
testCoverageEnabled = true
Run Code Online (Sandbox Code Playgroud)
进入你的构建类型.现在,当我运行Espresso测试(使用connectedCheck)时,当我开始执行以下:connectedAndroidTest任务时,我收到错误:
Tests on HTC One - 4.2.2 - API 17 - 1080x1920 - 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 com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:158)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:42)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Gradle Android插件0.10.2获取测试覆盖率报告.但是在运行一些测试后我仍然无法获得覆盖率报告.(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.+'
}
Run Code Online (Sandbox Code Playgroud)
而project的build gradle的buildscript部分是:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.10.+'
}
}
Run Code Online (Sandbox Code Playgroud)
一旦我gradlew connectedAndroidTest从终端运行,我可以在文件夹中找到coverage-instrumented-classes和code-coverage文件build夹.但我coverage在reports文件夹中找不到文件夹.(只有我能看到的是androidTests文件夹) …
我最近开始android-gradle-plugin在我的一个项目中集成1.1.0.该项目用于robolectric 2.4运行单元测试.
这是一个具有非常复杂依赖关系的多模块项目(某些模块依赖于其他模块).像这样的东西:
--> 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)
Run Code Online (Sandbox Code Playgroud)
有关更清晰的图片,请参阅jacoco-example项目.
我试图集成JaCoCo来生成单元测试的报告,但在我看来,它只运行androidTests基本上是仪器测试.
经过一些谷歌搜索后,我遇到了一些关于GitHub和其他文章的项目,但他们主要关注的是以前的版本,android-gradle-plugin或者正在使用其他第三方插件android-unit-test ,例如这里.
可能是我失去了谷歌的能力.但有人能指出我可以找到一些关于android gradle插件中的新内容以及如何仅针对单元测试运行jacoco任务的文档吗?
UPDATE
采用了nenick的例子中的脚本:
apply plugin: "jacoco"
configurations {
jacocoReport
}
task jacocoReport(dependsOn: 'testDebug') << {
ant {
taskdef(name:'jacocoreport',
classname: 'org.jacoco.ant.ReportTask',
classpath: configurations.jacocoReport.asPath)
mkdir dir: "${buildDir}/test-coverage-report"
mkdir dir: "${buildDir}/reports/jacoco/test/"
jacocoreport …Run Code Online (Sandbox Code Playgroud) 任何人都可以建议是否有办法在Jenkins管道中执行Jacoco?我已经下载了插件但是我没有在'Pipeline Syntax'中获得Jacoco选项,这是Pipeline脚本帮助.
提到此URL:https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin,其中没有jenkins jacoco管道的信息
我正在尝试检查我在Kotlin中编写的测试用例的代码覆盖率.当我执行时./gradlew createDebugCoverageReport --info,我的coverage.ec文件为空,我的报告显示我有0%的覆盖率.请注意,测试用例100%成功.谁能想到我的coverage.ec文件一直返回0字节的原因?
我到处搜寻都没有运气.
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'jacoco'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
testCoverageEnabled = true
}
release {
minifyEnabled false
testCoverageEnabled = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
testOptions {
unitTests.all {
jacoco {
includeNoLocationClasses = true
}
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude …Run Code Online (Sandbox Code Playgroud) 正如在Intellij IDEA的Open JaCoCo报告中所讨论的,当我使用Jacoco(而不是本机IntelliJ跟踪)收集代码覆盖率统计时,0.0%(即"无"覆盖率)始终显示在覆盖窗口中.
这是在我完成整个"分析 - >显示覆盖数据..."并选择了我生成的"jacoco.exec"文件之后.
相同的"jacoco.exec"文件可以与其他工具(如Jacoco本机报告生成任务)和Sonar一起使用,这些工具可以生成预期的覆盖率报告内容.
原生IntelliJ仪器也可以正常工作.
任何人都可以告诉我,为了让IntelliJ接受我的Jacoco报道,我必须采取哪些必要步骤吗?
鉴于Jacoco在"动态"工具时不能很好地与PowerMockito配合使用,我一直在尝试配置离线工具,希望这能为我提供适用于使用PowerMockito的类的单元测试覆盖率.
我已经将我的pom设置如下,但我的测试课程仍然保持0%的覆盖率.任何帮助都非常感激,因为它让我慢慢疯狂!
<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>mandy</groupId>
<artifactId>jacoco-test</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>jacoco-test Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<powermock.version>1.5.4</powermock.version>
<jacoco.version>0.7.1.201405082137</jacoco.version>
</properties>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<classifier>runtime</classifier>
<version>${jacoco.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>instrument</id>
<phase>process-classes</phase>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>restore-report</id>
<phase>prepare-package</phase>
<goals>
<goal>restore-instrumented-classes</goal>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin> …Run Code Online (Sandbox Code Playgroud) 我是Gradle和Android测试的新手,但我已经将我的Android项目转换为使用Gradle构建.
现在,我正在尝试使用Gradle的JaCoCo插件执行Android项目的测试覆盖.
我已将以下内容添加到build.gradle文件中:
apply plugin: 'jacoco'
Run Code Online (Sandbox Code Playgroud)
当我运行"gradle jacocoTestReport"时出现以下错误:
Task 'jacocoTestReport' not found in root project '<project name>'.
Run Code Online (Sandbox Code Playgroud)
从文档我应该也应用插件'java'但它与插件'android'冲突.
有没有解决的办法?
提前致谢.
我正在使用gradle 1.7和jacoco插件.我的项目使用java和scala插件
当我运行gradlew -i clean jacocoTestReport时
报告未创建,我在日志中看到
:bl:jacocoTestReport (Thread[Daemon Thread 13,5,main] - start
:bl:jacocoTestReport
Skipping task ':bl:jacocoTestReport' as task onlyIf is false.
:bl:jacocoTestReport SKIPPED
:bl:jacocoTestReport (Thread[Daemon Thread 13,5,main]) - complete
Run Code Online (Sandbox Code Playgroud)
这是什么意思?为什么不创建报告?
我需要在Gitlab中看到java maven项目的代码覆盖率报告.根据这个,这个和其他一些来源:
jacoco到插件列表中pom.xml..gitlab-ci.yml文件中添加了页面作业.Total.*?([0-9]{1,3})%到项目设置中的代码覆盖解析.但是没有任何报道报道,或者至少我看不到它.没有覆盖百分比或覆盖率报告页面.
.gitlab-ci.yml文件内容:
image: maven:latest
variables:
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
cache:
paths:
- .m2/repository/
build:
stage: build
script:
- mvn $MAVEN_CLI_OPTS compile
test:
stage: test
script:
- mvn $MAVEN_CLI_OPTS test
artifacts:
paths:
- target/site/jacoco/
pages:
stage: deploy
dependencies:
- test
script:
- mkdir public
- mv target/site/jacoco/index.html public
artifacts:
paths:
- public
deploy:
stage: deploy …Run Code Online (Sandbox Code Playgroud)