Diffblue Cover插件

3 篇文章 0 订阅
1 篇文章 0 订阅

Diffblue Cover插件

1、安装

  • IDEA应用市场搜索Diffblue Cover,选择第一个社区版进行安装。

image-20210709094759657

2、环境条件

  1. IntelliJ 版本 2021.1 或更高版本,或 IntelliJ 版本 2020.3 或更高版本
  2. Java 8 或 11 源代码(但请注意不支持 Java 11.0.7)
  3. 基于 Maven 或 Gradle 的项目
  4. 2 GB 最低内存要求(要在 IntelliJ 中进行修改,请选择Helpthen Change Memory Settings
  5. 您的项目必须编译成功并运行
  6. JUnit 始终是必需的依赖项。

3、 图标

  1. 索引 img- 我们正在发现您的项目结构!同时,单击该图标以编写测试。
  2. 编写测试 img- 单击图标为此方法或类编写测试。
  3. 不可测试 img- 此方法或类无法测试;单击图标以找出原因。
  4. 私有方法 img- 此方法无法测试,因为它是私有的,但可以通过公共方法间接测试。如果您想编写单元测试,请将此方法设为 public 或包保护。
  5. 测试写作正在进行中 img- 请稍等,我们完成!

4、使用

  1. 点击类或方法左侧img图标((或者右键->Write Tests),点击类左侧图标会生成该类下面的所有方法的测试类,对应文件夹下面生成单元测试文件,文件路径src/test/java

5、原理

下图显示了 Diffblue Cover 执行的流水线。

image-20210709101311098

  1. 它首先确保您的代码已编译。这是必需的,因为它对字节码执行分析。
  2. 然后它通过要测试的每个方法的路径进行尝试生成测试文件。它使用的输入与开发人员的输入相似。同时,它模拟了测试所依赖的文件
  3. 最后,它找出可能有用的断言并将它们添加到测试中。请注意,断言始终反映代码的当前行为。
  4. 它不做的是猜测您的代码的预期行为。
  5. 有时它可能找不到适合您的代码的测试,在这种情况下,它可能会返回一个部分测试供您完成。

6、进阶使用

1. 将 DCover 添加到 CI 管道

将 Diffblue Cover 添加到您的 CI 管道意味着您可以自动生成单元测试以检查您的代码质量,从而节省编写它们所需的时间和资源。这有助于开发人员的工作并对开发计划产生积极影响。它还强制开发人员确保他们正在更新测试,并且不会将任何失败的测试传递给其他拉取请求。在 CI 环境中使用 DCover 还可以保护代码库。CI管道如下图所示:

image-20210709103443364

前置条件

确保您的项目在功能齐全的 CI 管道中成功编译。

将 DCover 添加到 CI 管道

创建一个新的工作流并选择下面的相关脚本,注意在每种情况下进行设置:

  • 工作流名称
  • 合适的环境变量。这些都是:
    • 作为您的 CI 用户的帐户的访问令牌(请注意,这不能是 Bot 帐户)
    • DCover 发布 URL。

下面的脚本是自我记录的,包含每个实现所需的所有详细信息。

示例脚本:

  1. 该脚本检查机器人是否进行了最后一次提交。这是为了避免可能的无限 CI 循环。
  2. 输出值为:
    • 0 = 最后一次提交不是由机器人完成的
    • 1 = 最后一次提交是由机器人完成的。

脚本地址

  • GitHub 和 Azure

    https://github.com/diffblue/cover-pipelines/tree/master/azure-github

  • GitLab

    https://github.com/diffblue/cover-pipelines/tree/master/gitlab-ci

2、生成Jacoco的HTML覆盖率报告

  1. 在pom.xml文件下添加以下声明

    <dependency>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.5</version>
    </dependency>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.8.5</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>report</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
  2. 运行mvn test

    • 这将创建一个二进制格式的覆盖率报告jacoco.exec, 该报告在您的 Maven 项目目录target中。该报告在target/site/jacoco同时生成 XML、HTML 和 CSV 格式的报告。
    • 如果运行报错,尝试使用 mvn spring-javaformat:apply命令进行修复
  3. Jacoco是从代码指令(Instructions, Coverage),分支(Branches, Coverage),圈复杂度(Cyclomatic Complexity),行(Lines),方法(Methods),类(Classes)等维度进行分析的。

  4. 覆盖率报告字段说明

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-91vFztwb-1626176416173)(C:/Users/15652/AppData/Roaming/Typora/typora-user-images/image-20210713190810498.png)]

3、Jacoco覆盖率报告详细分析

3.1 一级目录

  • 红色方框对应对应颜色是总包,对应java文件下的一级目录。

    image-20210713192349666

  • 蓝色对应总包下面的各个包,总包的覆盖率取决于子包的覆盖率。

  • 进度条:红色进度条表未覆盖,绿色进度条表示已覆盖,Cov为总体覆盖率。

image-20210713192210373

3.2 二级目录

展示当前分组>包下面所有的类。

类的覆盖率取决于方法的覆盖情况。

image-20210713192637930

3.3 三级目录

展示当前分组>包>类下面的所有方法。

方法的覆盖率取决于方法内代码覆盖的情况。

image-20210713192718067

3.4 四级内容

展示方法内代码覆盖情况。

  • 绿色:表示行覆盖充分。
  • 红色:表示未覆盖的行。
  • 黄色棱形:表示分支覆盖不全。
  • 绿色棱形:表示分支覆盖完全。

image-20210713192914614

4. 相关参考资料

jacoco报告资料参考:

https://www.jianshu.com/p/ef987f1b6f2f

https://www.jianshu.com/p/50c5cc021396

官方文档:

https://docs.diffblue.com/getting-started/

5. 特殊说明

DCover CLI 命令行工具需要向官网工作人员申请,已申请,暂未回复,官方文档中的可视化方法暂时无法复现。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: diffblue cover是一种自动化软件测试工具,使用人工智能技术来生成软件的测试用例。它能够从源代码中自动识别出相关的测试需求,并自动生成适当的测试案例。diffblue cover还可以通过生成各种类型的测试用例来覆盖不同的代码路径,提供了全面的测试覆盖率。这个工具的使用可以大大减少软件测试的工作量和时间,提高测试效率和质量。 diffblue cover的关键特点是自动化。它能够快速地分析源代码,理解代码逻辑和功能,并基于这些信息生成针对代码的测试用例。这样的自动化过程可以显着减少手动编写测试用例的时间和精力,提高开发人员的工作效率。此外,diffblue cover还具有智能化的能力,能够根据源码的特点生成最合适的测试用例,提供更全面的测试覆盖。 除了自动生成测试用例,diffblue cover还提供了一些额外的功能。例如,它可以与持续集成系统集成,以便在每次代码提交时自动运行测试用例。此外,diffblue cover还支持云端部署,这意味着用户可以随时随地使用它,并且不需要额外的硬件或软件资源。 总之,diffblue cover是一种强大的自动化软件测试工具,它利用人工智能技术和自动生成测试用例的能力,减少了测试工作的工作量和时间,提高了测试的效率和质量。它的智能化和自动化功能使之成为开发人员的有力助手,帮助他们提供更可靠和稳定的软件产品。 ### 回答2: Diffblue CoverDiffblue 公司开发的一款自动化测试工具。它使用人工智能和自动化技术,帮助软件开发人员快速创建和维护高质量的单元测试。 Diffblue Cover的核心功能是自动生成测试代码。它可以分析现有的代码库,了解代码逻辑和要求,并为每个函数或方法生成相应的测试代码。这些测试代码可以验证代码的正确性、可靠性和稳定性,从而提高代码质量。 Diffblue Cover 还可以自动更新测试代码。在代码库发生更改时,Diffblue Cover可以很快地检测到,并相应地更新测试代码,确保测试的完整性和准确性。这极大地减轻了软件开发人员的负担,节省了时间和精力。 Diffblue Cover 还支持多种编程语言,包括Java、C#、C和C++等。这使得它可以应用于不同类型的软件开发项目。 总之,Diffblue Cover 是一款强大的自动化测试工具,可以大大提高软件开发的效率和质量。通过自动生成和更新测试代码,它减轻了开发人员的负担,同时可以快速发现和修复潜在的代码问题。使用Diffblue Cover,开发人员可以更专注于开发创新和高质量的软件。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Style_OvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值