idea代码测试覆盖率

news2024/7/6 18:11:53

前言

单元测试其实是检测代码最好的方式,单元测试,代码质量,这些都是很好的工具,单元测试需要结合mockito框架进行mock来测试,否则没用的数据写入到数据库里面也是占用空间,本身测试只是为了检查我的逻辑是否合理,流程是否通顺,判断是否到位。

<dependency>
<groupId>org.mockito</groupId>
 <artifactId>mockito-all</artifactId>
 <version>1.10.19</version>
 <scope>test</scope>
</dependency>

步骤

运行单元测试覆盖

首先选中需要测试的类的方法

运行之后会有一份测试报告给出来

点击对应的类查看覆盖结果,红色表示没有覆盖,绿色表示覆盖到了。

测试报告

也可以选择导出测试报告会以html的形式放在某个指定的目录

打开index.html之后显示的内容与窗口看到一样

打开点开相应的类看到的结果也是一样,非常方便

mockito单元测试

当你碰到一个庞大且复杂的逻辑的时候,相信你一定很困惑,如何进行单元测试是个问题,因为你要不就直接从api接口一个接口一个接口调用,然后还依赖环境的支持,如果环境不友好比如别人也在用你就很难了,因为你不能把存在很多问题的代码部署到环境上面。

有需求就有市场,总有一些大佬会做一些事情,向前走了一公里,mockito框架应运而生,缝管你什么代码逻辑,都可以局部测试,很方便的处理的大部分不好单元测试的逻辑,你需要什么样的数据就造什么样的数据,非常方便还可以复用,下次修改动,只需要简单跑跑单元测试就好。非常nice

导入包

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
        <scope>test</scope>
    </dependency>
    <dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-inline</artifactId>
			<version>4.5.1</version>
			<scope>test</scope>
		</dependency>

用例代码

@ContextConfiguration(classes = {EnableServerScheduleService.class, ServerDao.class})
@ExtendWith(SpringExtension.class)
class MonitorServiceRecordServiceDiffblueTest {
    @Test
    void testMonitorServiceAfterWork2() {
        SimpMessagingTemplate message = new SimpMessagingTemplate(mock(MessageChannel.class));
        message.setUserDestinationPrefix("getUU");
        ServerDao serverDao = mock(ServerDao.class);
        when(serverDao.findAllServer(Mockito.<String>any(), Mockito.<List<Integer>>any(), Mockito.<String>any(),
                Mockito.<List<String>>any())).thenReturn(new ArrayList<>());
        MonitorServiceRecordExtendDao monitorServiceRecordExtendDao = mock(MonitorServiceRecordExtendDao.class);
        RedisUtil redisUtil = new RedisUtil();
        (new MonitorServiceRecordService(monitorServiceRecordExtendDao, message, redisUtil, new SystemConfig(),
                serverDao)).monitorServiceAfterWork();
        verify(serverDao).findAllServer(Mockito.<String>any(), Mockito.<List<Integer>>any(), Mockito.<String>any(),
                Mockito.<List<String>>any());
    }
}

总结

测试覆盖查看还是很方便的,只是你要把每种情况都要考虑到,提供对应的代码示例去执行对应的代码块。不得不说idea这个测试报告还是挺友好的对与那些测试人员可以直观的看到测试覆盖的结果,对于开发人员也非常友好,直接看到那些代码覆盖到没有覆盖到。

引用

Mockito framework site

最后

点赞关注评论一键三连,每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1313592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

neo4j如何创建多个数据库

1.在neo4j的压缩包解压位置找到neo4j.conf文件 "D:\neo4j\neo4j-community-3.5.5\conf\neo4j.conf"2.修改文件 新增dbms.activate_database**.db 再重新neo4j打开网页就进入到新建的数据库中 如果要切换&#xff0c;就把原来的注释掉就可以

LeetCode Hot100 25.K个一组翻转链表

题目&#xff1a; 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯…

Linux内核介绍

文章目录 Linux内核介绍1. Linux内核的起源和发展历程1.1 起源1.2 发展历程 2. Linux内核的主要特性2.1 多任务处理2.2 多用户2.3 内存管理2.4 网络功能 3. Linux内核的架构3.1 用户空间与内核空间3.2 内核模块 4. Linux内核的疑难技术点解析4.1 进程调度4.2 内存管理 5. Linux…

【Spring】05 生命周期之初始化回调

文章目录 1. 回调是什么2. 初始化回调2.1 实现 InitializingBean 接口2.2 配置 init-method 3. 执行顺序4.优势及应用总结 在 Spring 框架中&#xff0c;生命周期回调&#xff08;Lifecycle Callbacks&#xff09;是一种强大的机制&#xff0c;它允许我们在 Spring 容器中的 Be…

阿里发布高质量图像转视频AI模型I2VGen-XL

受益于扩散模型快速发展&#xff0c;视频合成近年来取得了显著进步。然而&#xff0c;在语义准确性、清晰度和时空连续性方面仍存在挑战。这主要源于缺乏良好对齐的文本视频数据以及视频的复杂结构&#xff0c;使得模型难以同时确保卓越的语义和质量。 阿里团队提出了一种级联…

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字&#xff1f;无论是从书籍、网络还是社交媒体上&#xff0c;我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力&#xff0c;效率低下&#xff0c;那么怎么把图片转文字呢&#xff1f;今天我将介绍三种不同的方法来实现图片转文字。 图片转…

DevOps搭建(六)-安装Maven详细步骤

1、官网下载 下载地址&#xff1a; Maven – Download Apache Maven 2、上传压缩包到服务器 把下载好的压缩包上传到服务器上。 3、解压压缩包 解压压缩包到安装目录/usr/local/ tar -zxvf apache-maven-3.9.3-bin.tar.gz -C /usr/local/ 切换到/usr/local目录下ls命令看…

持续集成交付CICD:GitLabCI操作Harbor仓库

目录 一、实验 1.GitLabCI操作Harbor仓库 二、问题 1.gitlab-runner连接docker daemon报错 一、实验 1.GitLabCI操作Harbor仓库 &#xff08;1&#xff09;修改GitLabCI共享库代码并提交到mater CI.yaml .pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: …

代码随想录第三十三天(一刷C语言)|斐波那契数爬楼梯使用最小花费爬楼梯

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 动态规划步骤&#xff1a; 确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 一、斐波那契数 思路&#xff1a;参考carl文档 1、dp[i]的定义为&#xff…

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …

Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二) 本篇文章主要讲下蓝牙设备的配对. 1: 蓝牙设备列表展示 下 面是蓝牙设备adapter的代码: package com.test.bluetooth;import android.bluetooth.BluetoothDevice; import android.content.Context; import android.view.LayoutInflater;…

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一&#xff1a;缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明&#xff1a; 核心二&#xff1a;通道 (Channel)Channel类及其…

解决vue3 动态引入报错问题

之前这样写的&#xff0c;能使用&#xff0c;但是有警告 警告&#xff0c;查了下&#xff0c;是动态引入的问题&#xff0c;看到说要用glob 然后再我的基础上&#xff0c;稍微 改了下&#xff0c;就可以了&#xff1a; 最后打印了下&#xff0c;modules[../../components/flowc…

Javascript高频面试题

系列文章目录 文章目录 系列文章目录前言1.JavaScript常见数据类型null 和 undefind区别symbol&#xff08;ES6新增&#xff09;、bigInt&#xff08;ES10新增&#xff09; 2.JavaScript判断数据类型的方式3. 和 区别&#xff0c;分别在什么情况使用&#xff1f;4.变量声明 va…

c#winform学生信息管理系统sqlserver

vs2022开发 数据库sqlserver和c#winform结合设计的学生信息管理系统 一&#xff0e;需求分析 1.1设计可视化界面&#xff0c;具有身份验证功能&#xff0c;需要登录时输入账号及密码。 1.2学生用户能够注册自己的账号&#xff0c;添加自己的基本注册信息&#xff1a;学号、密…

JAVA的关键字、标识符和命名规范

目录 一、Java 二、关键字 三、标识符 四、命名规范 一、Java Java是一种面向对象的高级编程语言&#xff0c;最初由Sun Microsystems公司于1995年发布。它的特点是可移植性强、可靠性高、安全性好以及简单易学。Java是一种跨平台的语言&#xff0c;它可以在不同的操作系统…

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

背景 在项目过程中&#xff0c;有时候你需要调用非C#编写的DLL文件&#xff0c;尤其在使用一些第三方通讯组件的时候&#xff0c;通过C#来开发应用软件时&#xff0c;就需要利用DllImport特性进行方法调用。本篇文章将引导你快速理解这个调用的过程。 步骤 1. 创建一个CSharp…

java web系统的常见安全问题

一、背景 java开发的系统在发布到互联网后都需要进行安全扫描&#xff0c;本文主要总结开发web系统需要注意的与系统安全相关的问题。因为在做需求开发时&#xff0c;很少产品会将系统安全的因素考虑在内&#xff0c;总觉得实现个需求很简单&#xff0c;就是一些页面&#xff0…

Leetcode—131.分割回文串【中等】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—131.分割回文串 算法思想 实现代码 class Solution { public:bool isPalindrome(string s, int left, int right) {while(left < right) {if(s[left] ! s[right--]) {return false;}}return true;}vector<vector…

云服务配置docker镜像容器以及常用操作命令

首先通过ssh进入云服务器。如何ssh进入云服务器。 简单讲解一下docker中镜像和容器&#xff0c;打个比方&#xff0c;镜像相当于印钱的那个模板&#xff0c;容器相当于从模板上拓下来的钱&#xff0c;不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像&#xff0…