Jacoco在运行gradle任务时显示覆盖率为0.0,但在从Intellij运行时显示正确

问题描述 投票:0回答:1

我正在使用Jacoco插件来计算spring boot应用程序的代码覆盖率。 build.gradle中的Jacoco配置如下所示:

jacocoTestReport {
reports {
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
}

afterEvaluate {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: ['**/models/**',
                          '**/config/**',
                          '**/constants/**',
                          '**/Application.class'])
    })
}

}

jacocoTestCoverageVerification {
violationRules {
    rule {
        element = 'PACKAGE'
        excludes = ['some packages']
        limit {
            counter = 'BRANCH'
            minimum = 0.7
        }
    }
}

}

当我从IntelliJ运行coverage时,它会显示正确的结果,但是当我使用gradlew clean buils运行它时,它会失败,覆盖率为0.0。 enter image description here

我写了一个示例类,这里是jacoco报告快照 - 报告:enter image description here类:enter image description here我为SomeClass编写的测试是

public class SomeClassTest {
private SomeClass someClass;

@Before
public void setUp() throws Exception {
    someClass = new SomeClass(12, 23);
}

@Test
public void shouldSumTwoValues() {
    assertThat(someClass.sum()).isEqualTo(35);
}

}

有人可以帮我这个吗?

jacoco
1个回答
0
投票

鉴于src/main/java/SomeClass.java

class SomeClass {

  private Integer value1;
  private Integer value2;

  SomeClass(Integer value1, Integer value2) {
    this.value1 = value1;
    this.value2 = value2;
  }

  Integer sum() {
    return value1 + value2;
  }

}

src/test/java/SomeClassTest.java

import org.junit.*;
import static org.junit.Assert.*;

public class SomeClassTest {
  private SomeClass someClass;

  @Before
  public void setUp() throws Exception {
    someClass = new SomeClass(12, 23);
  }

  @Test
  public void shouldSumTwoValues() {
    assertEquals(35, (int) someClass.sum());
  }
}

build.gradle

apply plugin: "java"
apply plugin: "jacoco"

dependencies {
  testCompile "junit:junit:4.12"
}

repositories {
  mavenCentral()
}

执行gradle test jacocoTestReportbuild/reports/jacoco/test/html/index.html发表以下报告

report

除了build.gradle之外

jacocoTestReport {
  reports {
    xml.enabled false
    csv.enabled false
    html.destination file("${buildDir}/jacocoHtml")
  }

  afterEvaluate {
    classDirectories = files(classDirectories.files.collect {
        fileTree(dir: it,
                exclude: ['**/models/**',
                          '**/config/**',
                          '**/constants/**',
                          '**/Application.class'])
    })
  }
}

jacocoTestCoverageVerification {
  violationRules {
    rule {
        element = 'PACKAGE'
        excludes = ['some packages']
        limit {
            counter = 'BRANCH'
            minimum = 0.7
        }
    }
  }
}

除了更改build/jacocoHtml报告的目录外,不会更改结果/报告。

© www.soinside.com 2019 - 2024. All rights reserved.