当前位置: 首页 > 知识库问答 >
问题:

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

韶弘壮
2023-03-14

我正在使用Jacoco插件计算Spring启动应用程序的代码覆盖率。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
        }
    }
}

}

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);
}

}

有人能帮我吗?

共有2个答案

汝才良
2023-03-14

在我的例子中,我发现这是因为我将最小值设为1。当我突然将其改为0.9时,它就起作用了

姬天逸
2023-03-14

给定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。格雷德尔

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

dependencies {
  testCompile "junit:junit:4.12"
}

repositories {
  mavenCentral()
}

gradle test JacocoTestReport的执行会在构建/报告/Jacoco/test/html/index.html中生成以下报告

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上报告目录的改变。

 类似资料:
  • 我看到詹金斯插件中的代码覆盖率为零。我在客户端服务器模式下使用 Jacoco 0.8.7。客户端是詹金斯,服务器(此处存在jaco代理jar)是一个VM。当我使用旧版本的jaco 0.7.4时,这并没有发生。 Jenkins CI日志- Jenkins CI插件配置是这样的。使用ant和maven组合来转储exec文件。

  • Jacoco插件在jenkins报告中显示0%的覆盖率,但当我在本地系统中运行相同的命令时,Jacoco会正确生成报告。我正在使用以下命令: mvn-s xyz/settings.xml-f xyz/xyz/pom.xml清洁安装org.jacoco 所以当我在jenkins中运行这个命令时,它会生成错误的报告。我已经检查了它在工作区目录对应的项目在詹金斯。它显示每个项目的0%覆盖率。但是当我在本

  • 我正在使用Android Studio 1.2。2和Gradle插件1.2。3. 我正在尝试生成代码覆盖率报告,而不运行,只运行。我希望避免需要连接设备或模拟器,这样我就可以加快Jenkins服务器上的构建速度。 到目前为止,我所能做的最好的事情就是在报告中包含单元测试执行数据,如下所述:Android Studio中的Jacoco代码覆盖。这对于显示所有测试的结果很有用,但是目前我只想运行单元测

  • 问题内容: 从不同的代码库执行业务测试时,我必须获得应用程序的代码覆盖率。 我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用Java编写的。 我的应用程序是部署在tomcat上的一组war文件。 应用程序代码库与测试代码库是分开的。 为了获得覆盖范围,我遵循以下步骤。 1使用maven编译测试代码。 2将应用程序类从其构建位置($ {app.code.dir} / targe

  • 在运行基于 Gradle 的构建和集成测试后,我在“构建/jacoco”文件夹中成功生成了 2 个 .exec 文件。 gradle命令:“gradle清洁构建集成测试” 完成后,它将在build/jacoco文件夹下生成以下.exec文件。 test.exec integrationTest.exec 以下是我的sonar-project.properties文件。当我在Linux上运行“son

  • 我面临的错误是无法将java.lang.Integer类转换为java.lang.String类。运行gradle测试时-Pnum=10。这是我的代码: