标签: jacoco

Jacoco ant任务 - 没有jacoco.exec输出

我将我的Ant任务配置为

<target name="test" depends="init">
    <jacoco:coverage destfile="target/jacoco.exec">
        <junit printsummary="yes" haltonfailure="yes" fork="yes" forkmode="once">
            <classpath refid="my_project.path"/>
            <formatter type="plain"/>
            <formatter type="xml"/>
            <batchtest fork="false" todir="target/test-reports">
                <fileset dir="test">
                    <include name="**/*Test.java"/>
                </fileset>
            </batchtest>
        </junit>
    </jacoco:coverage>
</target>
Run Code Online (Sandbox Code Playgroud)

这产生了预期的junit结果.但是,target/jacoco.exec永远不会创建.我在ant test report任务执行期间没有任何错误.

测试:[jacoco:coverage]用覆盖率增强junit

...

[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0,009 sec
Run Code Online (Sandbox Code Playgroud)

报告:[jacoco:report]加载执行数据文件/home/usr/Workspaces/my_project/target/jacoco.exec

BUILD FAILED /home/usr/Workspaces/my_project/build.xml:73:无法读取执行数据文件/home/usr/Workspaces/my_project/target/jacoco.exec

总时间:14秒

好像我错过了一些东西,无法看清楚到底是什么.

java ant jacoco

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

SonarQube - 没有倾倒JaCoCo执行数据

我在jenkins工作中运行SonarQube(使用Post-build Actions).我遇到了JaCoCo的以下问题 -

[INFO] [16:57:43.157] Sensor JaCoCoSensor...
[INFO] [16:57:43.157] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/.../target/jacoco.exec
[INFO] [16:57:43.426] Sensor JaCoCoSensor done: 269 ms
Run Code Online (Sandbox Code Playgroud)

结果,我的项目获得了0%的代码覆盖率.找不到为什么没有创建jacoco.exec.

我没有将"JaCoCo"配置为由maven运行(在我的pom.xml中).我知道在过去jacoco.exec无论如何都是创建的(可能是Sonar本身).

我究竟做错了什么?我是否需要在我的pom.xml中配置JaCoCo才能使用?谢谢.

jacoco jenkins-plugins sonarqube

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

在JaCoCo代码覆盖范围中排除Setter和Getters

随着cobertura-maven-plugingetter和setter方法可排除使用代码覆盖ignoreTrivial选项.是否还有这种可能性jacoco-maven-plugin

这是我目前的配置:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.7.1.201405082137</version>
  <configuration>
    <excludes>
      <exclude>com/welovecoding/web/blog/test/**/*.class</exclude>
    </excludes>
  </configuration>
  <executions>
    <execution>
      <id>amend-unit-test-java-agent-option</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>report</id>
      <phase>prepare-package</phase>
      <goals>
        <goal>report</goal>
      </goals>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

getter setter code-coverage jacoco jacoco-maven-plugin

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

使用Sonarrunner和Gradle从Jacoco报告中排除软件包

有没有办法从SonarQube中排除包(由gradle + sonar-runner配备)覆盖率报告(由jacoco生成),而不将它们完全排除在项目之外?

以下是我到目前为止尝试的内容:

版本信息

  • SonarQube 4.5.1
  • Gradle 2.2.

Jacoco配置

// JaCoCo test coverage configuration
tasks.withType(Test) { task ->
    jacoco {
        append = false

        // excluded classes from coverage defined in above configuration
        excludes = excludedClasses()
    }

    jacocoTestReport {
        doFirst {
            classDirectories = fileTree(dir: "${buildDir}/classes/main/").exclude(excludedClasses())
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Sonarrunner配置

用于从声纳分析中排除包的属性设置.将此添加到我的配置会导致包在Sonar中根本不显示的情况.

property 'sonar.exclusions', excludedClasses().join(',')
Run Code Online (Sandbox Code Playgroud)

用于从jacoco中排除包的属性设置.设置此选项会导致包裹被排除在覆盖率分析之外,但会显示0%会累积到不良总分.

property 'sonar.jacoco.exclusions', excludedClasses().join(',')
Run Code Online (Sandbox Code Playgroud)

gradle jacoco sonar-runner

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

Jacoco离线仪器Gradle脚本

我试图寻找Jacoco离线仪器gradle脚本片段,但找不到.是否可以通过gradle脚本进行Jacoco离线检测?如果是的话...它的一个例子就是伟大的.谢谢.

java gradle jacoco build.gradle

8
推荐指数
3
解决办法
4329
查看次数

Gradle Jacoco - 找不到方法jacocoTestReport()

我正在尝试在Gradle中生成Jacoco测试报告.当我尝试同步我的代码时,我将收到以下错误:

错误:(56,0)无法在类型为org.gradle.api.Project的项目':app'上找到参数[build_38ehqsoyd54r3n1gzrop303so $ _run_closure4 @ 10012308]的方法jacocoTestReport().

我的build.gradle文件包含以下项目:

apply plugin: 'jacoco'

jacoco {
    toolVersion = "0.7.6.201602180812"
    reportsDir = file("$buildDir/reports/jacoco")
}

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled true
        csv.enabled false
        html.destination "${buildDir}/reports/coverage"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我查看文档时,我没有看到任何我做错的事情.

Gradle版本:3.3

为什么我收到此错误,我该如何解决?

java android gradle jacoco

8
推荐指数
2
解决办法
7913
查看次数

使用Android Gradle插件3.1.0不再找到androidJacocoAnt配置

更新到Android Gradle插件3.1.0(从3.0.1)后,我的JaCoCo单元测试覆盖率配置开始在Gradle配置阶段产生错误:

> Configuration with name 'androidJacocoAnt' not found.
Run Code Online (Sandbox Code Playgroud)

项目级build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.0'
    classpath "org.jacoco:org.jacoco.core:0.8.1"
}
Run Code Online (Sandbox Code Playgroud)

模块级build.gradle:

apply plugin: 'jacoco'

...

android {
    buildTypes {
        debug {
            testCoverageEnabled true
        }
    }

    ...
}

task jacocoTestReport(type: JacocoReport) {
    dependsOn 'createDebugCoverageReport'
    dependsOn 'testDebugUnitTest'

    reports {
        xml.enabled = true
        html.enabled = true
        csv.enabled = false
    }

    jacocoClasspath = configurations['androidJacocoAnt']

    def fileFilter = [
            '**/R.class',
            '**/R$*.class',
            '**/BuildConfig.*',
            '**/Manifest*.*',
            '**/*Test*.*',
            'android/**/*.*'
    ]

    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
    def mainSrc = "${project.projectDir}/src/main/java"
    print("${project.projectDir}/src/main/java") …
Run Code Online (Sandbox Code Playgroud)

android code-coverage gradle jacoco android-gradle-plugin

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

Jacoco代码覆盖项目的多种口味和模块

正如标题所说,这就是问题所在.我有一个带有模块的android风格的应用程序.该应用程序在android-studio和TeamCity服务器中使用gradle编译.我们有自定义任务来创建看起来像这样的代码覆盖:

task codeCoverageReport(type: JacocoReport) {
// Gather execution data from all subprojects
executionData fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec")

//Build class & source dirs
def classExcludes =['**/R.class',
                    '**/R$*.class',
        '**/BuildConfig.class',
        '**/*$InjectAdapter*.class',
        '**/*$ModuleAdapter*.class',
        '**/*$ViewInjector*.class']
sourceDirectories = files();
classDirectories = files();
subprojects.each{
    sourceDirectories += files(it.projectDir.absolutePath + '/src/main/java')
    def path1 = it.buildDir.absolutePath + '/intermediates/classes/debug'
    def path2 = it.buildDir.absolutePath + '/classes/main'
    classDirectories += fileTree(dir: path1, excludes: classExcludes, includes: ['**/*.class'])
    classDirectories += fileTree(dir: path2, excludes: classExcludes, includes: ['**/*.class'])
}

reports {
    xml.enabled true
    html.enabled true
    html.destination "${buildDir}/reports/jacoco"
    csv.enabled false
}

doFirst …
Run Code Online (Sandbox Code Playgroud)

android module gradle jacoco android-productflavors

7
推荐指数
0
解决办法
705
查看次数

找出哪些测试涵盖哪一行jacoco

我正在一个巨大的代码库上运行集成测试.在覆盖率报告中,我想知道哪个测试覆盖了代码中的某一行.无论如何使用jacoco吗?

java testing jacoco

7
推荐指数
2
解决办法
1962
查看次数

SonarQube:与JaCoCo的多模块gradle项目的覆盖范围不完整

我正在构建一个已经在分析我的Java 8/Gradle 3.3项目的SonarQube 6.2服务器.将JaCoCo添加到多模块gradle项目时,我意识到SonarQube正在"按模块"测量代码覆盖率:

如果一个类位于模块中A并且该类的测试位于模块中B,则SonarQube会指出该类未被覆盖.

我想测量所有模块的代码覆盖率,而不是基于每个模块.我该如何实现这一目标?

有很多类似的问题,但没有有用的答案,虽然这种情况对我来说似乎很常见.例如Jenkins默认情况下这样做.

我决定在github上构建一个蓝图来澄清这个问题.

主要build.gradle包括

plugins { id "org.sonarqube" version "2.2.1" }

subprojects {
    apply plugin: 'java'
    apply plugin: 'jacoco'

    repositories { mavenCentral() }
    dependencies { testCompile "junit:junit:4.12" }
}
Run Code Online (Sandbox Code Playgroud)

modA/build.gradle是空的.

它包括3类:TestedInModA,TestedInModATestTestedViaModB.

modB/build.gradle只是声明一个依赖modA:

dependencies { compile project(':modA') }
Run Code Online (Sandbox Code Playgroud)

它只包含一个类:TestedViaModBTest,测试TestedViaModB位于的类modA.

我的(私有)Jenkins实例显示了包括的两个类的100%覆盖率,而SonarQube说只有类TestedInModA(在其自己的模块中测试)被覆盖.

如何修改构建过程以查看SonarQube中的"跨模块覆盖"?

我很想更新我的项目,以便将来访问此问题的访问者可以找到一个有效的例子.

我的工作解决方案(感谢@Godin)

  1. 将以下内容添加到subprojects闭包中 …

gradle jacoco sonarqube

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