Junit5 快速上手使用 计算单元测试代码覆盖率

2023-05-16

文章目录

    • 实现步骤
        • 一、创建一个`maven` 项目
        • 二、引入`Junit` 的依赖
        • 三、编辑一段代码用于测试
        • 四、编写测试方法
        • 五、执行单元测试
        • 六、计算覆盖率
        • 七、完整实现代码

实现步骤

一、创建一个maven 项目

  • 不选择模板

二、引入Junit 的依赖

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.6.2</version>
            <scope>test</scope>
        </dependency>

三、编辑一段代码用于测试

public class JunitDemo {
    /**
     * 两数之和
     *
     * @param a
     * @param b
     * @return
     */
    public int sumExample(int a, int b) {
        return a + b;
    }

    /**
     * 两数取模
     *
     * @param a
     * @param b
     * @return
     */
    public int modExample(int a, int b) {
        return a % b;
    }
}

四、编写测试方法

  • @Test:表示方法是测试方法
  • @ParameterizedTest:表示方法是参数化测试
  • @RepeatTest:表示方法可重复执行
  • @Disabled:表示测试类或测试方法不执行
  • @Tag:表示单元测试类别
  • @Timeout:表示测试方法运行如果超过了指定时间将会返回错误
public class JunitDemoTest {
    private static JunitDemo junitDemo;

    @BeforeAll
    public static void beforeAllExample() {
        System.out.println("在所有测试方法执行开始前执行,且只执行一次");
    }

    @AfterAll
    public static void afterAllExample() {
        System.out.println("在所有测试方法执行结束后执行,且只执行一次");
    }

    @BeforeEach
    public void beforeEachExample() {
        junitDemo = new JunitDemo();
        System.out.println("在每个测试方法执行开始前执行");
    }

    @AfterEach
    public void afterEachExample() {
        System.out.println("在每个测试方法执行结束后执行");
    }

    /**
     * 参数化测试
     *
     * @param a
     * @param b
     * @param expected
     */
    @ParameterizedTest
    @CsvSource({"1,2,3", "1,3,4"})
    public void sumExampleTest(int a, int b, int expected) {
        int result = junitDemo.sumExample(a, b);
        Assertions.assertEquals(expected, result);
    }

    @Disabled
    @Test
    public void disabledTest() {
        System.out.println("该测试方法被忽略,不执行");
    }
}

五、执行单元测试

  • 控制台打印出测试结果
    在这里插入图片描述

六、计算覆盖率

  • 选择使用覆盖率运行
    在这里插入图片描述
  • 单元测试运行结束后,会自动弹出覆盖率面板
  • 也可生成HTML格式的测试报告
    在这里插入图片描述
  • 生成的测试报告
    在这里插入图片描述

七、完整实现代码

  • junit-demomaster 分支
  • https://gitee.com/aoweibrave/junit-demo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Junit5 快速上手使用 计算单元测试代码覆盖率 的相关文章

  • 论文笔记之 Collaborative Deep Learning for Recommender Systems

    这篇论文是KDD2015的一篇用DL去做RS的论文 想法挺有意思的 看过论文的同学都知道整体的模型可以用下图表示 xff1a 这里只讲讲整体的思路与理解 xff1a 1 xff09 这是一个CF和CBF结合用bayes去做 2 xff09
  • QGC地面站参数调节

    校准 xff1a 1 选择机架 xff1a 一般用DJI Flame Wheel F450机架 xff0c 选择之后点击 应用并重启 xff1b 2 传感器校准 xff1a 无人机会重新连接地面站 xff0c 依次校准 磁罗盘 陀螺仪 xf
  • 【Java】线程超时(设置一段代码执行超时时间)

    引用原文 xff1a https blog csdn net educast article details 51864912 代码 public class ThreadTest public static void main Strin
  • HDFS入门简介

    HDFS是什么 xff1f 易于扩展的分布式文件系统运行在大量普通廉价机器上提供容错机制为大量用户提供性能不错的存取服务 设计目标 xff1a 自动快速检测应对硬件错误流式访问数据 以流的方式访问数据 xff0c 设计用于数据的批量处理 缺
  • Android对于Fragment的使用以及底部导航栏问题

    fragment 一直提示fragment类型不对 该错误是在我们创建的fragment类文件中导错了包 底部导航栏不显示文字 在该处加上app labelVisibilityMode 61 34 labeled 34 就可以全部显示了 原
  • 建立个人网站1:腾讯云域名购买,域名解析以及使用GitHub初步搭建网站

    建立个人网站1 申请域名 xff0c 域名解析以及使用GitHub初步显示 腾讯云的学生优惠申请了一个域名 然后用了GitHub的服务器搭了网站 xff0c github优点是不用备案 xff0c 域名解析把GitHub的个人域名复制过来就
  • SQL语句快查

    SQL语句 0 MYSQL登陆 mysql u root p 1 创建数据库 span class token keyword CREATE span span class token keyword DATABASE span span
  • Numpy 数据类型及转换

    今天写代码遇到数据类型相关的问题 xff0c 记忆不是很清楚 xff0c 所以总结归纳了一下 NumPy 数据类型 名称描述bool 布尔型数据类型 xff08 True 或者 False xff09 int 默认的整数类型 xff08 类
  • 安装phantomjs-prebuilt失败(已解决)

    今天使用 pyecharts snapshot 插件需要安装 phantomjs xff0c 结果报了下面得错误 xff0c 我不快乐了 xff1a 解决方法一 xff1a sudo npm i nrm g 安装nrm nrm 查看使用方法
  • 通信原理 AMI码和HDB3码的编码方式

    AMI 简介 AMI 消息码的 1 交替地变换为 43 1 和 1 xff0c 而 0 保持不变 优点 xff1a 没有直流成分 xff0c 高 xff0c 低频分量少 xff0c 编码电路简单 xff0c 可利用传号极性交替这一规律 观察
  • ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', syste

    好几天没用MySQL xff0c 今天出现了这个ERROR 2013 HY000 Lost connection to MySQL server at 39 reading initial communication packet 39 s
  • Ubuntu 10.04下安装libgtk2.0-dev

    转自 xff1a http chaoyang blog ustc edu cn index php archives 133 去看原文吧 xff0c 有些图粘不过来 好文章啊 学了一些知识 xff0c 谢谢作者 Problem 输入如下命令
  • Linux添加应用图标

    在Linux中 xff0c 有些软件因为采用源码编译或者其他的方式直接来进行安装 xff0c 一般通过bash脚本进行启动 xff0c 但对于有的用户来说 xff0c 更希望在桌面有一个桌面软件图标来方便打开 所以 xff0c 我们接下来将
  • NS2协议分析与仿真

    一 NS2安装 ns2需要的环境较为复杂 xff0c gcc版本不易过高 xff0c 以免无法编译成功 xff0c 推荐使用gcc 4 8 g 43 4 8 span class token comment 安装依赖 span span c
  • 【力扣周赛】第344场周赛

    力扣周赛 第344场周赛 6416 xff1a 找出不同元素数目差数组题目描述解题思路 6417 xff1a 频率跟踪器题目描述解题思路 6418 xff1a 有相同颜色的相邻元素数目题目描述解题思路 6419 xff1a 使二叉树所有路径
  • linux删除桌面图标

    进入 local share applications wine Programs 里面的文件命名一般是 lt 软件名称 gt desktop 删除不要的文件 xff0c 在进入 config menus applications merg
  • 初学shell脚本之-bash: /home/test/hello.sh: Permission denied

    今天学习shell脚本在windows写了个shell脚本 span class token operator span span class token operator span bin span class token operato
  • git push 失败 commit count: 3, latest commit: ****. missing Change-Id in message footer

    git push 失败 commit count 3 latest commit 76f0bdf missing Change Id in message footer 如 xff1a 76f0bdf这次提交没有id 执行 git log查
  • 【vscode】ssh通过跳板机连接内网服务器

    以防自己忘记 跟着下面的步骤 step 1 本地生成密钥 生成自己电脑的公钥和私钥 ssh keygen t ed25519 会跳出几个步骤 xff0c 第一个是指定路径用的 xff0c 可以直接回车 xff1b 后两个步骤是设置私钥密码
  • error: Missing nullability on parameter `cfg_cmd` in method 报错解决

    最近做从android9 0到11 0的代码移植工作 xff0c 需要在WifiManager java中添加接口 xff0c 添加以后编译报错 xff1a frameworks base wifi java android net wif

随机推荐