我是格雷德尔的新手。我正在使用下面的代码。但是它会生成单元测试用例的覆盖率。但它不是为集成测试用例生成的。我在src/test/java包中有测试类。
test {
dependsOn jettyRunWar
ignoreFailures true
finalizedBy jettyStop
}
apply plugin: 'jacoco'
jacocoTestReport {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
使用Gradle 5.4.1(现在是5.5.1),我能够在任何测试任务后获得报告,目前我有test
和integrationtest
任务。
Edit3:修正了只执行部分测试任务时的潜在bug
dolast
/doFirst
块中配置ExecutionData
,这是我的错误。欲了解更多信息,请查看此gradle github Ticketdolast
/doFirst
块中)executiondata{tasks.withtype(Test).findall{it.jacoco.destinationfile.exists()}*.jacoco.destinationfile}
Edit2:解决方案是一样的,我只是调整了一下
jacocoTestReport {
// The JaCoCo plugin adds a JacocoTaskExtension extension to all tasks of type Test.
// Use task state to include or not task execution data
// https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskState.html
// This declaration will be used as a closure, notice there no wrapping parenthesis
executionData tasks.withType(Test).findAll { it.state.executed }
// If the above instruction really don't work, there maybe some things that intervene in the process, in this case, you may be a bit more lucky with this instruction
// executionData { tasks.withType(Test).findAll { it.jacoco.destinationFile.exists() }*.jacoco.destinationFile }
reports {
xml.enabled true
xml.destination(file("${jacoco.reportsDir}/all-tests/jacocoAllTestReport.xml"))
html.enabled true
html.destination(file("${jacoco.reportsDir}/all-tests/html"))
}
}
同样的技巧也可以应用于Sonarqube
任务:
sonarqube {
group = "verification"
properties {
// https://jira.sonarsource.com/browse/MMF-1651
property "sonar.coverage.jacoco.xmlReportPaths", jacocoTestReport.reports.xml.destination
properties["sonar.junit.reportPaths"] += integrationTest.reports.junitXml.destination
properties["sonar.tests"] += sourceSets.integrationTest.allSource.srcDirs
// ... other properties
}
}
更老但很管用的答案。同样,使用上述知识(Test
的任务由JacoCotaskExtension
扩展),可以用Test.jacoco.destinationFile
和IntegrationTest.jacoco.destinationFile
替换ExecutionData
的手动文件
配置。
// Without it, the only data is the binary data,
// but I need the XML and HTML report after any test task
tasks.withType(Test) {
finalizedBy jacocoTestReport
}
// Configure the report to look for executionData generated during the test and integrationTest task
jacocoTestReport {
executionData(file("${project.buildDir}/jacoco/test.exec"),
file("${project.buildDir}/jacoco/integrationTest.exec"))
reports {
// for sonarqube
xml.enabled true
xml.destination(file("${project.buildDir}/reports/jacoco/all-tests/jacocoAllTestReport.xml"))
// for devs
html.enabled true
html.destination file("${project.buildDir}/reports/jacoco/all-tests/html")
}
}
sonarqube {
group = "verification"
properties {
// https://jira.sonarsource.com/browse/MMF-1651
property "sonar.coverage.jacoco.xmlReportPaths", ${project.buildDir}/test-results/integrationTest"
properties["sonar.junit.reportPaths"] += "${project.buildDir}/test-results/integrationTest"
properties["sonar.tests"] += sourceSets.integrationTest.allSource.srcDirs
// ... other properties
}
}
project.tasks["sonarqube"].dependsOn "jacocoTestReport"
我正在为一个项目编写集成测试,在这个项目中,我正在进行HTTP调用,并测试它们是否成功。 因为我没有导入任何模块,也没有直接调用函数coverage.py报告为0%。 我想知道如何为此类集成HTTP请求测试生成覆盖率报告?
使用jacoco代理并获取测试覆盖率报告有大量答案。大多数答案都是一半,我有点困惑。 以下是我想做的:1。我的Java应用程序正在某个远程服务器上运行。说IP-192.168.17.7 我使用以下命令运行测试:mvn-Denv=stage-Dmaven。测验失败ignore=true-DsuiteFile=src/test/java/Smoke。xml测试 现在我如何通过使用Jacoco代理获得J
我已经看了一段时间关于stackoverflow的不同文章和答案,但我还没有找到适合我的情况的有效解决方案。我对jacoco、maven和sonar如何一起创建报告的理解肯定有问题,所以我要寻求帮助。 我有一个多模块maven项目,其结构如下(稍微简化了一下): 请允许我扩展一下。父模块只是一个带有整个依赖项及其版本的pom。这个pom被用作level1的每一个其他模块的父模块(直接位于根下面)。
我在IntelliJ IDEA上设置了一个Java应用程序。我有几个测试,我需要为每个测试单独生成覆盖报告。 IntelliJ IDEA 覆盖率运行器一次运行所有测试,并生成显示整体覆盖率的单个报告。如何在分级脚本中使用智能IDEA IDEA覆盖运行器或Jaco插件来生成单独的测试报告?
我一直在尝试在JBoss服务器中实现JaCoCo离线代码覆盖,使用仪表化的EAR进行部署和jacococagent.jar,以便跟踪针对所述JBoss运行的外部集成测试的代码覆盖。 我一直在关注这样的指南: http://www.eclemma.org/jacoco/trunk/doc/offline.html http://automationrhapsody.com/code-coverage
在我的gradle构建脚本中,我有一个部分说在运行任务时生成测试报告:JacocoTestReport 当我运行任务时,它给我一个错误:无法读取执行数据文件…\build\jamoco\test.exec我如何修复这个错误。当我在完整的项目上进行gradle构建时,我看到测试报告正在生成。
假设主模块A和子模块是B和C。在我的gradle文件中,我只在声纳和雅各科的配置下面添加了。 当我运行gradle任务时:构建成功,但显示在下面的信息 信息-JaCoCoItSensor:未找到JaCoCo IT报告:/../../../A/build/JaCoCo/JaCoCo-IT.exec 集成测试工作正常。但仅显示主模块的代码覆盖率。我想要的是,当我运行集成测试时,子模块代码也包含在代码覆