• Sonarqube-8.9版本测试单元测试覆盖率


    一、引言

    1、java单元测试框架

    junit
    testNG
    Spock

    2、可以用来生成覆盖率报告的插件

    Jacoco
    Cobertura

    3、sonarqube上的单元测试覆盖率

    SonarQube 不会运行测试或生成报告。要在分析中包含覆盖结果,需要设置第三方覆盖工具来生成报告并配置 SonarQube 以导入这些报告。

    生成单元测试覆盖率需要按照以下步骤操作:
    在这里插入图片描述

    SonarQube 使用导入的覆盖率报告中的覆盖行和可执行行(或要覆盖的行)来计算其覆盖率指标。 SonarQube 计算覆盖率如下:
    在这里插入图片描述

    二、Jacoco

    官方参考 https://community.sonarsource.com/t/coverage-test-data-importing-jacoco-coverage-report-in-xml-format/12151

    1、 junit 框架

    • 代码结构
      在这里插入图片描述
    • pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.example</groupId>
      <artifactId>java-maven-junit-helloworld</artifactId>
      <version>2.0-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    
        <!-- This configures the compiler to produce Java 8 class files. -->
        <!-- The minimum JDK version installed is 8 of course, but newer JDK releases should work too. -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
    
        <junit.jupiter.version>5.2.0</junit.jupiter.version>
        <junit.platform.version>1.2.0</junit.platform.version>
        <hamcrest.version>1.3</hamcrest.version>
        <mockito.version>2.21.0</mockito.version>
    	<!-- This configures the jacoco and sonarqube. -->
        <jacoco.plugin.version>0.8.1</jacoco.plugin.version>
        <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
        <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
        <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
        <sonar.language>java</sonar.language>
      </properties>
    
      <dependencies>
        <!-- Testing dependencies. -->
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-api</artifactId>
          <version>${junit.jupiter.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-params</artifactId>
          <version>${junit.jupiter.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.junit.jupiter</groupId>
          <artifactId>junit-jupiter-engine</artifactId>
          <version>${junit.jupiter.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-core</artifactId>
          <version>${hamcrest.version}</version>
        </dependency>
        <dependency>
          <groupId>org.mockito</groupId>
          <artifactId>mockito-junit-jupiter</artifactId>
          <version>${mockito.version}</version>
        </dependency>
    	<!-- Jacoco dependencies. -->
        <dependency>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>0.8.6</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
    
          <plugin>
            <!-- Configures the compiler. -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
              <compilerArgs>
                <arg>-Xlint</arg>
              </compilerArgs>
            </configuration>
          </plugin>
    
          <plugin>
            <!-- Unit tests are run by surefire. -->
            <!-- Classes under src/test/java called *Test are included automatically. -->
  • 相关阅读:
    电力电子转战数字IC20220718-19day51-52——TLM通信
    【优化求解】粒子群算法求解干扰受限无人机辅助网络优化问题【含Matlab源码 230期】
    NC14695 不可名状之物
    后端——egg.js是什么、egg.js安装、约定规则、路由Router、控制器Controller、跨域
    Kubernetes资源编排系列之四: CRD+Operator篇
    STM32智能门禁系统教程
    大型网站技术架构核心原理与案例分析学习笔记(理论篇)
    JUC第二十八讲:JUC工具类: Semaphore详解
    【Ansible】YAML语法
    【Python百日进阶-WEB开发】Day179 - Django案例:11短信验证码
  • 原文地址:https://blog.csdn.net/qq_35550345/article/details/127124178