IDEA插件-----Squaretest(自动生成单元测试)

2023-11-08

菜单栏就多了一项Squaretest
在这里插入图片描述
首先我们打开一个类,这个类就是我们即将要作为实验的类,这个类有7个public方法,因为Squaretest生成的单元测试方法都是只能生成public的,当然这也是合理的嘛!毕竟private的肯定被public调用了。
打开你的类,光标定位到代码里,右击鼠标选择Generate…
在这里插入图片描述
然后你就会看到这里有两个熟悉的图标,第一次的话选择第二个选项,它会让你选择你一下单元测试的模板
在这里插入图片描述
选择第二项后就会弹出一个框看下面这里它自动会识别出当前类需要Mock的成员变量,直接点ok
在这里插入图片描述
自动会使用类的真实目录层次在test文件夹中创建出来一个单元测试类,类名就是原类名后加Test
在这里插入图片描述
报错了呢,不要慌,这个断言是为了检查你单元测试跑出来的结果是否符合预期的,如果你不想检查只想完成覆盖率,直接干掉就可以了
在这里插入图片描述
如果你想修改单元测试的模板,可以在单元测试类中按快捷键,Alt+M,或者通过Squaretest的菜单倒数第二个
在这里插入图片描述
解决了上面一个问题之后,又发现另一个问题,这个工具VO,DTO,Entity,Command,Model这种实体类来讲,一般这种实体类我们都用lombok的注解get,set,还有constract构造器等注解,但是这个工具只能生成这些实体类的构造器的单元测试,无法生成get set方法的单元测试,所以写了个base方法,实体类继承一下,简单的写两行带就好了,看下面代码:

@SpringBootTest
@RunWith(MockitoJUnitRunner.class)
public abstract class BaseVoEntityTest<T> {
    protected abstract T getT();

    private void testGetAndSet() throws IllegalAccessException, InstantiationException, IntrospectionException,
            InvocationTargetException {
        T t = getT();
        Class modelClass = t.getClass();
        Object obj = modelClass.newInstance();
        Field[] fields = modelClass.getDeclaredFields();
        for (Field f : fields) {
            boolean isStatic = Modifier.isStatic(f.getModifiers());
            // 过滤字段
            if (f.getName().equals("isSerialVersionUID") || f.getName().equals("serialVersionUID") || isStatic || f.getGenericType().toString().equals("boolean")
                    || f.isSynthetic()) {
                continue;
            }
            PropertyDescriptor pd = new PropertyDescriptor(f.getName(), modelClass);
            Method get = pd.getReadMethod();
            Method set = pd.getWriteMethod();
            set.invoke(obj, get.invoke(obj));
        }
    }

    @Test
    public void getAndSetTest() throws InvocationTargetException, IntrospectionException,
            InstantiationException, IllegalAccessException {
        this.testGetAndSet();
    }

}

同样的方式我们在实体类上通过Squaretest生成单元测试,然后继承我上面写的那个base类,vo的单元测试代码稍加改动,如下
在这里插入图片描述

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

IDEA插件-----Squaretest(自动生成单元测试) 的相关文章

随机推荐

  • MySQL----MySQL将数据从一个数据导入到另一个数据库

    原文链接 1 从源数据库到处数据 mysqldump u 用户名 p 数据库名 gt 文件名 sql 如 mysqldump u root p test gt test sql 2 将test sql文件复制到另一个数据库所在的服务器上 比
  • 【QT】【ChatGPT】具有一点点深度的问题

    QT ChatGPT 具有一点点深度的问题 程序说明 一 博客日期 二 引言 版权声明 先上简单菜 稍微复杂点 一 有哪些类是隐式的引用计数 二 请你谈一下你对C 智能指针的理解和使用方式 三 请你简述一下C 中的虚函数 四 请你谈一下对C
  • 第18课 微信小程序app.js全局属性与公共方法的使用

    第18课 微信小程序app js全局属性与公共方法的使用 通过小程序的背景api播放器案例演示 由于背景音乐播放器全局只能有一个 所以只能在全局设置这一个并调用一个 1 app js内获取背景音乐api并设置成属性 2 在utils内设置公
  • 关于Jquery的Validate插件--rules添加自定义方法(强密码验证方法)

    简介 请看菜鸟教程 根据给出的方法 自定义识别密码是否为复杂密码的方法 链接 https www runoob com jquery jquery plugin validate html Query Validate 插件为表单提供了强大
  • ERROR: No matching distribution found for Django 报错解决

    ERROR No matching distribution found for Django 报错解决 今天安装一个 python 依赖时 执行 pip install r requirements txt后 界面出现ERROR No m
  • getAction()

    event getAction 获得的返回值 触摸屏幕时刻 case MotionEvent ACTION DOWN 0 break 触摸并移动时刻 case MotionEvent ACTION MOVE 2 break 终止触摸时刻 c
  • 向Intel迁移!(上)

    转自 http www programmer com cn 14703 文 王越 2005年 苹果宣布其芯片向Intel迁移 在这背后夹杂着错综复杂的缘由 从Intel的诞生 精简指令集与复杂指令集之争到AIM与Wintel两大联盟之争 几
  • 计算机系统的组成说课,计算机系统的组成说课稿

    计算机系统的组成说课稿 一 教学内容分析 1 教学内容分析 本节是广东教育出版社出版的 信息技术 初中第一册第一章 信息处理与计算机 第二节的内容 授课为1课时 这是小学升初一新生接触信息技术这门课的第二堂课 这节课能否讲得生动易懂 涉及能
  • 函数式语言Haskell

    函数式语言Haskell 为了方便 建设在windows下安装编译器和解析器 今有2个 Hugs 和 GHC 网址如下 http cvs haskell org Hugs pages downloading htm http www has
  • 密码学之公钥密码体系(2):RSA算法

    密码学之公钥密码体系 2 RSA算法 文章目录 一 RSA算法背景 二 RSA算法描述 三 RSA的硬件实现 四 RSA的安全性 五 对RSA的选择密文攻击 一 RSA算法背景 上一讲介绍了公钥密码体系中的背包算法 在Merkle背包算法出
  • Spring自动事物管理失效情形

    声明式事物管理虽然十分方便 但是也有失效的情形 1 Transactional作用在非public方法上 Spring的事物管理只支持使用public声明的方法 即使是在同一个包或者同一个类中的方法事务管理也会失效 package com
  • Materialize时间组件datepicker汉化

    首先说明我用的是1 0版本 由于版本差异导致js调用的方法不一致 请注意
  • ubuntu20.04修改时间localtime

    根据网络上目前的一些语句设置都无法正常实现 主要原因在于 网上的办法都是基于 System clock synchronized 参数的值是 yes 但是我的该参数一直都是no 且根据网上常规办法无法实现修改时区 因此 我经过查找资料找到了
  • 安装nodejs时提示Leaving directory

    在按照标准的编译命令 configure gt make gt make install 在make的时候发生错误 deps v8 src base platform mutex h 210 error expected before co
  • 在线PDF保护解除器,完全免费,没有文件数量限制 - PDF在线解锁器

    通常一般的PDF文件我们可以使用PDF阅读器程序打开 并可以打印内容 复制文本或转换为其他格式 但是 有时你可能发现某些PDF文件虽然可以像普通PDF一样被我们查看 但却无法打印它或选择复制文本内容 这些文件是被PDF创建者加了权限保护的P
  • 2.1 pytorch官方demo(Lenet)

    实现一个图像分类器 pytorch官方demo TRAINING A CLASSIFIER PytorchDemo LeNet 介绍 Convolutions 卷积 Subsampling 下采样 Full connection 全连接 L
  • avive零头撸矿

    Avive 是一个透明的 自下而上替代自上而下的多元网络 旨在克服当前生态系统的局限性 实现去中心化社会 aVive 一个基于 SBT 和市场的 deSoc 它使 dapps 能够与分散的位置 oracle 和 SBT 关系进行互操作 您的
  • vue history模式 nginx配置

    vue history模式 nginx配置 wap为history路径 location wap try files uri uri router index index html index htm location router rew
  • jupyter notebook选择conda环境

    参考 https stackoverflow com questions 37085665 in which conda environment is jupyter executing 需要安装 conda install ipykern
  • IDEA插件-----Squaretest(自动生成单元测试)

    菜单栏就多了一项Squaretest 首先我们打开一个类 这个类就是我们即将要作为实验的类 这个类有7个public方法 因为Squaretest生成的单元测试方法都是只能生成public的 当然这也是合理的嘛 毕竟private的肯定被p