标签: jacoco

Jacoco单元和集成测试覆盖范围 - 个人和整体

我有一个项目(ProjectA),其中包含一些单元测试和集成测试.

以下是结构.

ProjectA - src/java(java源代码)
- test/java(Junit单元测试)
- 测试/资源(Junit单元测试所需的资源)
- src/java-test(集成测试)
- conf(包含.xml所需的文件)建筑/测试/编制目的)

我运行以下命令 - 所有这些命令都有效,但我怀疑build.gradle/GRADLE_HOME/init.d/*.gradle文件中的配置如何影响我所获得的.

好像我错过了一些东西而没有得到我想要的东西.

命令:
- gradle clean build - 它工作正常
- gradle clean build jacocoTestReport - 它工作正常.
- gradle clean build IntegrationTest jacocoTestReport - 它工作正常(如果我有一个tomcat实例并在同一个ProjectA的另一个putty窗口中运行).

第三个子弹操作完成后,我在Jenkins作业工作区中看到额外的文件夹"build"及其子文件夹(除了从源/版本控制中检出的文件夹).

ie under - JenkinsWorkspace
/ build
- classes(包含以下提到的.class文件作为sourceSets部分之一)
---- integrationTest
---- main
---- test

- resources(包含所有文件) .这是在"CONF"文件夹中的源代码控制的.properties/.xml文件

- 报告(包含.XML/.html文件的PMD /的CheckStyle/FindBugs的和任一个单元测试结果或IT测试,但不能同时使用)---. - checkstyle
---- findbugs
---- pmd
---- jacoco
---- tests(注意:这是复数,即它不是"test",它被定义为sourceSets中的一个条目)

- jacoco(这包含2个.exec文件,即test.exec和integrationTest.exec都有不同的文件大小)
---- …

integration-testing unit-testing code-coverage gradle jacoco

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

将Sonar,Jacoco,Gradle,ScalaTest与Junit,Java集成

我在构建过程中非常成功地集成了Gradle(1.11),Sonar(4.1.1),Java,Scala和Jacoco.我甚至设法获得有关成功测试数量的信息(感谢Stackoverflow!).我有一个问题.

我似乎无法获得有关每次测试的覆盖率的信息.有这个信息会很高兴.

> 15:11:16.514 INFO - Sensor JaCoCoSensor... 15:11:16.535 INFO -
> Analysing C:\example\gradle-sonar-jacoco-scala\build\jacoco\test.exec
> 15:11:17.887 INFO - No information about coverage per test.
Run Code Online (Sandbox Code Playgroud)

该项目的简化版本位于:https://github.com/sebastianharko/gradle-sonar-java-jacoco-scalatest-junit

干杯!

java scala gradle jacoco sonarqube

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

在gradle中使用jacoco显示测试覆盖率

我正在使用gradle文件来构建我的项目。在此文件中,我正在使用jacoco生成测试报告。我要做的是修改构建文件,以便在我的测试覆盖率不是100%时显示一条消息。或者至少只是显示测试覆盖率。这可能吗?

这是我的build.gradle:

apply plugin: 'java'
apply plugin: 'jacoco'

sourceSets.main.java.srcDirs = ['src']
sourceSets.test.java.srcDirs = ['test']

dependencies {
    testCompile group: 'junit', name: 'junit', version: "4.+"
}

repositories {
    mavenCentral()
}

jacocoTestReport {
    doFirst {
      classDirectories = files('build/classes/main/draw')
    }
    reports {
        xml.enabled false
        csv.enabled false
        html.destination "build/reports/coverageHtml"
    }
}

task(runui, dependsOn: jar, type: JavaExec) {

    main = 'gui.Main'
    classpath = sourceSets.main.runtimeClasspath
}

defaultTasks 'clean', 'test', 'jacocoTestReport', 'runui'
Run Code Online (Sandbox Code Playgroud)

unit-testing gradle jacoco

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

在intellij中查看条件覆盖范围

鉴于代码:

public void foo(int age,boolean smart) {
  if (age>18 && smart) { // <--- This is the part that should be covered
    doSomething()
  }
}
Run Code Online (Sandbox Code Playgroud)

使用JUnit我测试foo(15,true)和foo(25,true)

IntelliJ将报告条件行已完全覆盖(绿色),但事实并非如此.

在使用Jacoco的Eclipse中,线条被正确标记为部分覆盖,条件为黄色.

IntelliJ是否有办法在条件级别进行覆盖?

junit unit-testing code-coverage intellij-idea jacoco

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

为什么sonaqube gradle插件会创建jacoco-overall.exec文件?

在我们的多模块gradle构建中,我们使用jacoco来测量代码覆盖率,我们正在创建一个聚合的jacoco-exec文件.要使sonarqube插件使用此文件来创建报告,我们将其配置如下:

sonarqube {
    properties {
        property "sonar.jacoco.reportPath", "$project.rootDir/build/jacoco/jacoco.exec"
    }
}
Run Code Online (Sandbox Code Playgroud)

当使用gradle sonarqube运行sonarqube插件时,它会输出以下消息:

10:56:00.064 INFO  - Analysing C:\A\Projekte\sqs\git\build\sonar\de.kvb.sqs_admin-db\jacoco-overall.exec
10:56:00.116 INFO  - No information about coverage per test.
10:56:00.116 INFO  - Sensor JaCoCoOverallSensor done: 116 ms
...
10:56:00.718 INFO  - Sensor JaCoCoSensor...
10:56:00.720 INFO  - Analysing C:\A\Projekte\sqs\git\build\jacoco\jacoco.exec
10:56:00.738 INFO  - No information about coverage per test.
...
10:56:06.442 INFO  - Analysing C:\A\Projekte\sqs\git\build\sonar\de.kvb.sqs_admin-gui\jacoco-overall.exec
10:56:06.453 INFO  - No information about coverage per test.
10:56:06.453 INFO  - Sensor JaCoCoOverallSensor done: 31 ms
...
10:56:06.833 INFO …
Run Code Online (Sandbox Code Playgroud)

gradle jacoco sonar-runner sonarqube

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

如何在Android Studio中使用Jacoco生成androidTest的代码覆盖率报告

我可以使用Jacoco的test文件夹生成代码覆盖率报告,我也想在androidTest文件夹中生成有关仪器测试用例的报告。请分享任何代码段或链接以供参考。

android gradle jacoco android-studio build.gradle

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

Gradle jacoco覆盖报告有多个子模块?

有没有人知道如何为包含多个gradle子模块的codecoverage的java jacoco报告配置gradle文件?

我当前的方法只显示当前子模块的代码覆盖,但不显示兄弟 - 子模块的代码覆盖.

我有这个项目结构

- build.gradle (1)
- corelib/
    - build.gradle (2)
    - src/main/java/package/Core.java
- extlib/
    - build.gradle (3)
    - src/main/java/package/Ext.java
    - src/test/java/package/Integrationtest.java
Run Code Online (Sandbox Code Playgroud)

当我执行gradlew :extlib:check :extlib:jacocoTestReportjunit-test 时,执行"Integrationtest.java"并生成一个codecoverage报告,该报告不包含像Core.java这样的issib类的codecoverage

结果应该包括Ext.java和Core.java的代码库

我已经读过了

但没有发现任何线索

这是gradle文件的内容

// root build.gradle (1)
// Top-level build file where you can add configuration options 
// common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
Run Code Online (Sandbox Code Playgroud)
// build.gradle (2) subproject …
Run Code Online (Sandbox Code Playgroud)

java code-coverage gradle jacoco

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

根据产品风味尺寸创建gradle任务

我的build.gradle中有以下productFlavors:

productFlavors {

    free {

    }
    paid {

    }       
}
Run Code Online (Sandbox Code Playgroud)

现在,我添加了一个flavorDimension(http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-flavor-variants),如下所示:

flavorDimensions "payment", "releasetype"

productFlavors {

    paid {
        dimension "payment"
    }
    free {
        dimension "payment"
    }
    beta {
        dimension "releasetype"
    }

    major {
        dimension "releasetype"
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用此脚本为jacoco覆盖率报告生成gradle任务。该脚本将构建类型(调试,发布)与产品风格(付费,免费,...)结合在一起,并相应地生成任务。

当然,这是由于风味尺寸而造成的,因为脚本未将它们考虑在内。

该脚本生成任务:

testDebugPaidUnitTestCoverage
testDebugFreeUnitTestCoverage
testDebugBetaUnitTestCoverage
testDebugMajorUnitTestCoverage
Run Code Online (Sandbox Code Playgroud)

它应该做的是:

testDebugPaidBetaUnitTestCoverage
testDebugPaidMajorUnitTestCoverage
...
Run Code Online (Sandbox Code Playgroud)

我试图通过gradle任务访问flavorDimensions

android.flavorDimensions
Run Code Online (Sandbox Code Playgroud)

但无法识别该属性:

Error:Could not get unknown property 'flavorDimensions' for object of type com.android.build.gradle.LibraryExtension.
Run Code Online (Sandbox Code Playgroud)

关于如何扩展此脚本以使其与风味尺寸一起使用或如何从外部jacoco.gradle脚本访问它们的任何建议?

我可以从那里访问构建类型和产品口味,所以应该可以吗?

android gradle jacoco android-gradle-plugin

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

将多个测试运行合并到一个Jacoco.exec文件中

在我的基于环境变量的项目中,运行了不同的集成测试集。例如

mvn test -Dconfig=a
mvn test -Dconfig=b
Run Code Online (Sandbox Code Playgroud)

同时运行这两条线可提供完整的测试范围。

现在的问题是,每次运行都会在目标文件夹中创建一个jacoco.exec文件,但是第二次运行将通过删除目标文件夹来覆盖第一个运行。

我想使用jacoco merge合并exec文件,但是我不确定该怎么做。

我可以将输出目录更改为目标和合并以外的其他位置,但是合并后如何维护版本或必须添加一行以删除文件夹。

任何帮助,将不胜感激

java maven jacoco jacoco-maven-plugin

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

测试期间gradle跳过jacoco

我有一个测试任务间歇性失败的问题(我怀疑这是因为jacoco在测试期间触发了[生成报告])。

有没有一种方法可以在测试过程中禁用jacoco的运行?我可以创建一个仅用于生成覆盖率报告的新任务(我也想知道该怎么做)。在很多情况下,我在运行测试任务时实际上并不需要测试覆盖率报告。

gradle jacoco

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