当前位置: 首页 > news >正文

使用IDEA编写测试用例,复杂度校验

最近我们公司要求开发人员必须写测试用例,组织了TDD培训,测试驱动开发,同时衡量代码的圈复杂度,我记录下初次使用的过程。

编写测试用例,查看用例覆盖度

1、要编写测试用例,并看下测试用例的覆盖度:
先在pom.xml中引入依赖

      <dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.6.2</version></dependency><dependency><groupId>org.assertj</groupId><artifactId>assertj-core</artifactId></dependency>

2、编写测试代码:我一般使用跟代码相同路径下写test单元测试代码:
在这里插入图片描述
测试代码如下:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;public class StringUtilTest {@Testpublic void upperFirstSeqenceCaseTest() {//测试是否相等assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("assert_test"));//测试单个单词assertEquals("Assert", StringUtil.upperFirstSeqenceCase("assert"));//测试复杂下划线情况assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("_assert_test_"));//测试连续下划线assertEquals("AssertTest", StringUtil.upperFirstSeqenceCase("assert__test"));//测试大小写混合assertEquals("AssertTestExample", StringUtil.upperFirstSeqenceCase("assErT_tesT_exaMpLe"));//测试有数字assertEquals("AssertTest123", StringUtil.upperFirstSeqenceCase("assert_test123"));//测试特殊字符assertEquals("!@#$%^&*()", StringUtil.upperFirstSeqenceCase("!@#$%^&*()"));//测试没有下滑线情况assertEquals("Assert test", StringUtil.upperFirstSeqenceCase("assert test"));}@Testpublic void nullTest() {//测试为空的情况assertEquals("", StringUtil.upperFirstSeqenceCase(""));}
}

3、运行,下面的选择表示显示测试用例覆盖度。
在这里插入图片描述
4、运行完后,右边会有框显示出来,提示覆盖度,也可以选择导出
在这里插入图片描述

查看代码复杂度

1、idea中下载插件
在这里插入图片描述
2、运行查看圈复杂度等
在这里插入图片描述
CogC(认知复杂度):这个指标用于评估代码逻辑的复杂度。
ev(G)(基本复杂度):用来衡量程序的非结构化程度。
iv(G)(模块设计复杂度):这个指标衡量模块判定结构,即模块和其他模块的调用关系。
v(G)(圈复杂度):用于衡量一个模块判定结构的复杂程度。

在这里插入图片描述

http://www.lryc.cn/news/493358.html

相关文章:

  • 搭建私有云存储
  • 【从零开始的LeetCode-算法】3304. 找出第 K 个字符 I
  • 深入解析分布式遗传算法及其Python实现
  • gitee:创建仓库,存入本地文件至仓库
  • 计算分数的浮点数值
  • 在 C/C++ 中,volatile 关键字的作用是什么?.volatile 关键字与 const 关键字有什么区别?
  • golang debug调试
  • 自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析
  • 07 初始 Oracle 优化器
  • Java对象与XML互相转换(xstream)
  • 一键生成唯美动漫图:ComfyUI-tPonynai详细搭建教程
  • C++设计模式(工厂模式)
  • 多阶段报童问题动态规划求解,Python 实现
  • 【C++进阶篇】像传承家族宝藏一样理解C++继承
  • Java基础面试题09:Java异常处理完成以后,Exception对象会发生什么变化?
  • mysql sql语句 between and 是否边界值
  • Java接收LocalDateTime、LocalDatee参数
  • 方差分析、相关分析、回归分析
  • SQLModel入门
  • 单片机蓝牙手机 APP
  • PostgreSQL在Linux环境下的常用命令总结
  • Unity shaderlab 实现LineSDF
  • Ubuntu中的apt update 和 apt upgrade
  • Android 中 Swipe、Scroll 和 Fling 的区别
  • linux基础2
  • 如何通过智能生成PPT,让演示文稿更高效、更精彩?
  • 执法记录仪数据自动备份光盘刻录归档系统
  • 启动SpringBoot
  • 重定向操作和不同脚本的互相调用
  • 51单片机教程(九)- 数码管的动态显示