【Java高级技术】单元测试——概述和快速入门

2023-11-05

单元测试——概述和Junit框架快速入门

1.概述
  • 就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试

  • 可以用来对方法进行测试,它是第三方公司开源出来的(很多开发工具已经集成了Junit框架,比如IDEA)

  • 优点

    (1)可以灵活的编写测试代码,可以针对某个方法执行测试,也支持意见完成对全部方法的自动化测试,且各自独立

    (2)不需要程序员去分析测试的结果,会自动生成测试报告出来

2.快速入门

需求:某个系统有多个业务方法,请使用Junit单元测试框架,编写测试代码,完成正确性测试

具体步骤

  • 因为IDEA已经集成了Junit,所以不需要手动导入
  • 为需要测试的业务类定义对应的测试类,并为每个业务方法编写测试方法(测试方法必须公共,无参,无返)
  • 测试方法上必须声明@Test注解,在测试方法中,调用被测试的业务方法
  • 开始测试:选中测试方法(附近位置)右键运行代码,如果通过控制台显示绿色,失败显示红色

字符串工具类:

public class StringUtil {
    //功能:打印字符串长度
    public static void printNumber(String name){
        //发现错误,加入判断
        if(name == null){
            System.out.println(0);
            return;
        }
        System.out.println("名字长度是:" + name.length());
    }
    //功能:求字符串最大索引
    public static int getMaxIndex(String data){
        if(data == null){
            return -1;
        }
        //return data.length(); //这里逻辑有问题!但是没有出现异常
        return data.length() - 1;

 }

测试类:

public class StringUtilTest {
    
    @Test
    public void testPrintNumber(){
        //在测试方法中,调用被测试的方法即可
        StringUtil.printNumber("admin"); //名字长度是:5
        StringUtil.printNumber(null);
    }
    @Test
    public void testGetMaxIndex(){
        System.out.println(StringUtil.getMaxIndex(null)); //-1
        int index = StringUtil.getMaxIndex("admin");
        Assert.assertEquals("逻辑错误", 4 ,index);
        System.out.println(index);
    }
}

测试方法必须公共、无参、无返

断言机制:程序编写者可以预测程序运行的结果,使用Assert类的静态方法assertEquals

public static void assertEquals(String 错误提示, long 预期值, long 实际值);

3.Junit单元测试框架的常用注解(Junit 4.xxxx版本)
注解 说明
@Test 测试类中的方法必须用它修饰才能成为测试方法,才能启动执行
@Before 用来修饰一个实例方法,该方法会在每一个测试方法执行之前执行一次
@After 用来修饰一个实例方法,该方法会在每一个测试方法执行之后执行一次
@BeforeClass 用来修饰一个静态方法,该方法会在所有测试方法之前只执行一次
@AfterClass 用来修饰一个静态方法,还方法会在所有测试方法之后只执行一次

测试类:

public class StringUtilTest {

    @BeforeClass
    public static void beforeClass(){
        System.out.println("-------- beforeClass修饰static方法,会在所有测试方法之前,执行一次 --------");
    }

    @AfterClass
    public static void afterClass(){
        System.out.println("-------- afterClass修饰static方法,会在所有测试方法之后,执行一次 --------");
    }

    @Before //初始化数据
    public void before(){
        System.out.println("-------- before修饰实例方法,会在每一个测试方法之前,执行一次 --------");
    }

    @After //释放资源
    public void after(){
        System.out.println("-------- after修饰实例方法,会在每一个测试方法之后,执行一次 --------");
    }

    @Test
    public void TestPrintNumber() {
        StringUtil.printNumber("admin");
    }

    @Test
    public void TestGetMaxIndex() {
        int index1 = StringUtil.getMaxIndex(null);
        System.out.println(index1);

        int index2 = StringUtil.getMaxIndex("admin");
        System.out.println(index2);
        Assert.assertEquals("方法有逻辑错误", 4, index2);
    }
}
  • 在测试方法之前执行的,常用来初始化资源
  • 在测试方法之后执行的,常用来释放资源
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Java高级技术】单元测试——概述和快速入门 的相关文章

随机推荐

  • 边缘计算赋能智慧城市:机遇与挑战

    本文系国家重点研发计划项目和国家自然科学基金联合基金重点支持项目的阶段性研究成果 项目编号分别为 2018YFB0204100 U1911201 胡淼 吴润 陈嘉文 谢自轩等对本文亦有贡献 摘要 边缘计算是一种前瞻性的新兴计算范式 将对城市
  • 威feng网站的aes算法破解

    网站是 aHR0cHM6Ly93d3cuZmVuZy5jb20v 话说这个网站在过年前使用了aes算法 当然过年后也是aes 但就是把秘钥换了 换成更需要解密一段字符串 然后获得秘钥 最后请求时候再去用这个秘钥加密 并且最后发现秘钥和偏移是
  • vue脚手架搭建项目(详细教程)

    目录 1 node环境的安装和配置 2 vue脚手架环境安装 3 vue项目的创建 4 项目运行流程 1 node环境的安装和配置 下载地址 https nodejs org zh cn download 根据自己电脑系统及位数选择 我的电
  • windows 自启动脚本

    第一 一 例如我们要开机自启动一个脚本 C abc script bat 如果直接开机启动该脚本会弹出一个黑框 我们希望能后台执行它 此时我们需要建一个 vbs脚本来后台执行该脚本 脚本内容为 复制代码代码如下 set ws WScript
  • k8s部署consul集群

    k8s以StatefulSet方式部署consul集群 public service ns yaml apiVersion v1 kind Namespace metadata name public service consul serv
  • 本周总结(爬虫和复习)

    1 爬虫 爬取豆瓣电影top250 代码 爬取的结果 这里只有一部分结果 还有输出部分的拓展程序没有安装完 2 复习 临近期末考试 对本学期所学的内容进行复习和笔记的整理 老师所画的重点要着重复习 不懂的到相应的资源上进行访问
  • STM32F4系列因为VCAP和BYPASS_REG不识别JTAG问题

    下午早早把F429系统板焊完了 上电测试 无法识别JTAG 百度说下载改调SW模式可行 试了一下 依然不行 没办法 仔细对原理图了 发现问题 VCAP接2 2UF电容接地 以前做103板子没见过这玩意 很可以 查了下发现 果然有问题 手册加
  • Tomcat 自动清理日志和缓存

    改方案针对apache tomcat 9 0 17版本 1 catalina host manager localhost manager日志修改 1 在tomcat conf logging properties文件下修改 maxDays
  • Python:模块的绝对导入和相对导入

    思维导图 思维导图中的例子假设我们项目的project结构如下 知识要点 推荐阅读 Python import和from import方法对比 Python 包的调用 路径如何指定 参考资料 1 python from import详解以及
  • 在setup使用ref

  • 015——继承(来 , 看看Java中的继承关系)

    目录 继承 继承概述 使用继承的好处 什么是继承 使用继承的好处 继承后子类的特点 案例演示 继承的设计规范 内存运行原理 继承的设计规范 为什么 内存运行原理 继承的特点 子类是否可以继承父类的构造器 子类是否可以继承父类的私有成员 子类
  • 安卓模拟器中运行C程序

    在 workspace目录下编译好安卓源码 在安卓模拟器中跑一个最简单的C程序 下面来说一下跑C程序的过程 史上最简单的C程序 include
  • 基于MATLAB粒子群算法优化生产调度问题

    基于MATLAB粒子群算法优化生产调度问题 随着企业规模的扩大和竞争的加剧 制造企业越来越重视生产计划安排与协调 生产调度问题是指在生产过程中 对生产资源进行优化调度 以达到最佳生产效率和经济效益的决策问题 在实际应用中 生产调度问题涉及到
  • error:object with buffer protocol required如何解决(学习中问题分析)

    在学习openmv中遇到的问题 object with buffer protocol required 如何解决 根据网上搜索资料得到 F write 如openmv中的串口发送函数 函数需要一个字符串或者字节数组或者bytes对象作为参
  • 【Redis】——AOF持久化

    什么是AOF日志 AOF日志是redis为数据的持久化提供了的一个技术 日志里面记录着执行redis写命令 每当redis执行一条写命令的时候 就会将该命令记录 到AOF日志当中 当redis启动的时候 可以加载AOF日志中的所有指令 并执
  • 学习计划|一个月学会 Python,零基础入门数据分析

    在数据分析领域 python 是一个绕不开的知识和工具 如果不会用 python 就很难说自己会数据分析 但是最近很多想要入门数据分析的小白经常问我 Python 怎么入门 Python 虽然被称作是 最简洁的语言 但是它终究还是一门编程语
  • 笔试

    文章目录 前言 19 IC设计流程 1 确定项目需求 2 前端设计 3 RTL 实现 4 功能验证 5 逻辑综合 DFT 6 形式验证 7 静态时序分析 8 后端设计 20 对数字IC设计的理解 总结 往期精彩 前言 本文首发于微信公众号
  • Java —— 处处是指针

    public class Main public static void main String args String s1 123 String s2 s1 s2 321 System out println s1 int num1 1
  • matlab之简单粒子群的函数寻优

    沉寂了好久 再来CSDN 寻找那一片蔚蓝的天空 编辑环境变了呀 试一下Markdown编辑器 一 关于粒子群算法 粒子群算法是一种智能优化算法 关于智能 个人理解 不过是在枚举法的基础上加上了一定的寻优机制 试想一下枚举法 假设问题的解空间
  • 【Java高级技术】单元测试——概述和快速入门

    单元测试 概述和Junit框架快速入门 1 概述 就是针对最小的功能单元 方法 编写测试代码对其进行正确性测试 可以用来对方法进行测试 它是第三方公司开源出来的 很多开发工具已经集成了Junit框架 比如IDEA 优点 1 可以灵活的编写测