我有一个项目(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
我在构建过程中非常成功地集成了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
干杯!
我正在使用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) 鉴于代码:
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是否有办法在条件级别进行覆盖?
在我们的多模块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) 我可以使用Jacoco的test文件夹生成代码覆盖率报告,我也想在androidTest文件夹中生成有关仪器测试用例的报告。请分享任何代码段或链接以供参考。
有没有人知道如何为包含多个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) 我的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脚本访问它们的任何建议?
我可以从那里访问构建类型和产品口味,所以应该可以吗?
在我的基于环境变量的项目中,运行了不同的集成测试集。例如
mvn test -Dconfig=a
mvn test -Dconfig=b
Run Code Online (Sandbox Code Playgroud)
同时运行这两条线可提供完整的测试范围。
现在的问题是,每次运行都会在目标文件夹中创建一个jacoco.exec文件,但是第二次运行将通过删除目标文件夹来覆盖第一个运行。
我想使用jacoco merge合并exec文件,但是我不确定该怎么做。
我可以将输出目录更改为目标和合并以外的其他位置,但是合并后如何维护版本或必须添加一行以删除文件夹。
任何帮助,将不胜感激
我有一个测试任务间歇性失败的问题(我怀疑这是因为jacoco在测试期间触发了[生成报告])。
有没有一种方法可以在测试过程中禁用jacoco的运行?我可以创建一个仅用于生成覆盖率报告的新任务(我也想知道该怎么做)。在很多情况下,我在运行测试任务时实际上并不需要测试覆盖率报告。
jacoco ×10
gradle ×8
java ×3
unit-testing ×3
android ×2
sonarqube ×2
build.gradle ×1
junit ×1
maven ×1
scala ×1
sonar-runner ×1