标签: jacoco

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

更新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)

testing android jacoco build.gradle android-gradle-plugin

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

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

我正在尝试使用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-classescode-coverage文件build夹.但我coveragereports文件夹中找不到文件夹.(只有我能看到的是androidTests文件夹) …

android unit-testing gradle jacoco android-gradle-plugin

38
推荐指数
4
解决办法
4万
查看次数

Jacoco和Unit使用android-gradle-plugin> = 1.1测试代码覆盖率

我最近开始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)

android unit-testing jacoco android-gradle-plugin

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

詹金斯管道中的Jacoco报道

任何人都可以建议是否有办法在Jenkins管道中执行Jacoco?我已经下载了插件但是我没有在'Pipeline Syntax'中获得Jacoco选项,这是Pipeline脚本帮助.

提到此URL:https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin,其中没有jenkins jacoco管道的信息

groovy jenkins jacoco jenkins-plugins

35
推荐指数
3
解决办法
3万
查看次数

JaCoCo使用Kotlin和Android 3.0返回0%的覆盖率

我正在尝试检查我在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)

android code-coverage jacoco kotlin

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

使用Jacoco时,Coverage视图在Intellij中显示0.0%

正如在Intellij IDEA的Open JaCoCo报告中所讨论的,当我使用Jacoco(而不是本机IntelliJ跟踪)收集代码覆盖率统计时,0.0%(即"无"覆盖率)始终显示在覆盖窗口中.

这是在我完成整个"分析 - >显示覆盖数据..."并选择了我生成的"jacoco.exec"文件之后.

相同的"jacoco.exec"文件可以与其他工具(如Jacoco本机报告生成任务)和Sonar一起使用,这些工​​具可以生成预期的覆盖率报告内容.

原生IntelliJ仪器也可以正常工作.

任何人都可以告诉我,为了让IntelliJ接受我的Jacoco报道,我必须采取哪些必要步骤吗?

java code-coverage intellij-idea jacoco

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

无法让Jacoco使用离线工具与Powermockito合作

鉴于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)

java powermock jacoco

33
推荐指数
2
解决办法
3万
查看次数

使用JaCoCo Gradle插件的Android测试代码覆盖率

我是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'冲突.

有没有解决的办法?

提前致谢.

testing android code-coverage gradle jacoco

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

运行jacocoReport

我正在使用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)

这是什么意思?为什么不创建报告?

java scala gradle jacoco

32
推荐指数
3
解决办法
2万
查看次数

使用gitlab-ci.yml文件的代码覆盖率报告

我需要在Gitlab中看到java maven项目的代码覆盖率报告.根据这个,这个和其他一些来源:

  1. 我添加jacoco到插件列表中pom.xml.
  2. 在我的.gitlab-ci.yml文件中添加了页面作业.
  3. 添加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)

code-coverage maven jacoco gitlab gitlab-ci

30
推荐指数
6
解决办法
2万
查看次数