Jacoco Gradle中的最小代码覆盖阈值
如何设置中的最小代码覆盖率Jacoco Gradle中的最小代码覆盖阈值,gradle,groovy,jacoco,Gradle,Groovy,Jacoco,如何设置中的最小代码覆盖率 如果不满足,我希望生成失败。该功能现在可用。您只需应用Gradle JaCoCo插件并定义覆盖率验证,如下所示: apply plugin: 'jacoco' jacocoTestCoverageVerification { violationRules { rule { limit { minimum = 0.7 } } } } //
如果不满足,我希望生成失败。该功能现在可用。您只需应用Gradle JaCoCo插件并定义覆盖率验证,如下所示:
apply plugin: 'jacoco'
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.7
}
}
}
}
// to run coverage verification during the build (and fail when appropriate)
check.dependsOn jacocoTestCoverageVerification
最后一行非常重要,因为除非显式运行jacoctestcoverageverification
任务,否则构建不会失败
有关您可以添加的支票种类的详细信息,请参阅。该功能现在可用。您只需应用Gradle JaCoCo插件并定义覆盖率验证,如下所示:
apply plugin: 'jacoco'
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.7
}
}
}
}
// to run coverage verification during the build (and fail when appropriate)
check.dependsOn jacocoTestCoverageVerification
最后一行非常重要,因为除非显式运行jacoctestcoverageverification
任务,否则构建不会失败
有关您可以添加的支票种类的更多信息,请参见。以下是竞争示例
task wrapper(type: Wrapper){
gradleVersion = '4.8'
}
plugins {
id 'java'
id 'maven'
id "jacoco"
}
jacoco{
toolVersion = '0.8.1'
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.5
}
}
}
}
jacocoTestReport {
reports {
csv.enabled false
xml.enabled false
html {
enabled true
destination file("$buildDir/reports/jacoco")
}
}
executionData(test)
}
tasks.build.dependsOn(jacocoTestReport)
test{
jacoco{
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpDir = file("$buildDir/jacoco/classpathdumps")
}
}
下面是一个例子
task wrapper(type: Wrapper){
gradleVersion = '4.8'
}
plugins {
id 'java'
id 'maven'
id "jacoco"
}
jacoco{
toolVersion = '0.8.1'
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.5
}
}
}
}
jacocoTestReport {
reports {
csv.enabled false
xml.enabled false
html {
enabled true
destination file("$buildDir/reports/jacoco")
}
}
executionData(test)
}
tasks.build.dependsOn(jacocoTestReport)
test{
jacoco{
append = false
destinationFile = file("$buildDir/jacoco/jacocoTest.exec")
classDumpDir = file("$buildDir/jacoco/classpathdumps")
}
}
在Android应用程序中,此配置起作用: 项目:build.gradle
buildscript {
repositories {
google()
jcenter()
maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
classpath "com.android.tools.build:gradle:3.1.4"
classpath "org.jacoco:org.jacoco.core:0.8.2"
}
}
应用程序:build.gradle
ext.jacoco_version = '0.8.2'
def configDir = "${project.rootDir}/config"
def reportDir = "${project.buildDir}/reports"
def mainSrc = "$project.projectDir/src/main/java"
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter)
//Jacoco jacocoTestReport
apply plugin: 'jacoco'
jacoco.toolVersion = jacoco_version
task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
reports {
xml.enabled = false
html.enabled = true
}
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
])
}
task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') {
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec")
violationRules {
failOnViolation = true
rule {
limit {
minimum = 0.7
}
}
}
}
我们可以通过以下命令行执行它:
./gradlew jacocoTestCoverageVerification
我在Android应用程序中使用了gradle wrapper 4.4。此配置有效: 项目:build.gradle
buildscript {
repositories {
google()
jcenter()
maven { url 'https://plugins.gradle.org/m2/' }
}
dependencies {
classpath "com.android.tools.build:gradle:3.1.4"
classpath "org.jacoco:org.jacoco.core:0.8.2"
}
}
应用程序:build.gradle
ext.jacoco_version = '0.8.2'
def configDir = "${project.rootDir}/config"
def reportDir = "${project.buildDir}/reports"
def mainSrc = "$project.projectDir/src/main/java"
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter)
//Jacoco jacocoTestReport
apply plugin: 'jacoco'
jacoco.toolVersion = jacoco_version
task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
reports {
xml.enabled = false
html.enabled = true
}
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = fileTree(dir: project.buildDir, includes: [
'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
])
}
task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') {
sourceDirectories = files([mainSrc])
classDirectories = files([debugTree])
executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec")
violationRules {
failOnViolation = true
rule {
limit {
minimum = 0.7
}
}
}
}
我们可以通过以下命令行执行它:
./gradlew jacocoTestCoverageVerification
我使用了gradle wrapper 4.4。默认情况下,gradle Jacoco插件将使用以下代码测试指令的覆盖率:
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.85
}
}
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
minimum = 0.87
}
limit {
counter = 'BRANCH'
minimum = 0.80
}
}
}
}
我需要测试行和分支覆盖率。为了向Jacoco提及这一点,我们必须使用。计数器可以有多种值,如:指令、行、分支、复杂度、方法和类。指令是默认的
为了验证线路和分支覆盖率,可以使用以下代码:
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.85
}
}
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
minimum = 0.87
}
limit {
counter = 'BRANCH'
minimum = 0.80
}
}
}
}
一条规则可以包含多个限制
参考:默认情况下,Gradle Jacoco插件将使用以下代码测试指令的覆盖率:
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.85
}
}
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
minimum = 0.87
}
limit {
counter = 'BRANCH'
minimum = 0.80
}
}
}
}
我需要测试行和分支覆盖率。为了向Jacoco提及这一点,我们必须使用。计数器可以有多种值,如:指令、行、分支、复杂度、方法和类。指令是默认的
为了验证线路和分支覆盖率,可以使用以下代码:
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
minimum = 0.85
}
}
}
}
jacocoTestCoverageVerification {
violationRules {
rule {
limit {
counter = 'LINE'
minimum = 0.87
}
limit {
counter = 'BRANCH'
minimum = 0.80
}
}
}
}
一条规则可以包含多个限制
参考:嗨,你的解释真的帮了我很大的忙。有没有办法单独测试一个特定的类是否有限制?是的,看看这个问题嗨,你的解释真的帮了我很多。有没有办法单独测试一个特定的类是否有限制?是的,看看这个问题,在意识到你需要
check.dependsOn jacotestcoverage验证之前我已经损失了1小时:|在意识到你需要check.dependsOn jacotestcoverage验证之前我已经损失了1小时:|