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

单元测试——概述和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 {@Testpublic void testPrintNumber(){//在测试方法中,调用被测试的方法即可StringUtil.printNumber("admin"); //名字长度是:5StringUtil.printNumber(null);}@Testpublic void testGetMaxIndex(){System.out.println(StringUtil.getMaxIndex(null)); //-1int 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 {@BeforeClasspublic static void beforeClass(){System.out.println("-------- beforeClass修饰static方法,会在所有测试方法之前,执行一次 --------");}@AfterClasspublic static void afterClass(){System.out.println("-------- afterClass修饰static方法,会在所有测试方法之后,执行一次 --------");}@Before //初始化数据public void before(){System.out.println("-------- before修饰实例方法,会在每一个测试方法之前,执行一次 --------");}@After //释放资源public void after(){System.out.println("-------- after修饰实例方法,会在每一个测试方法之后,执行一次 --------");}@Testpublic void TestPrintNumber() {StringUtil.printNumber("admin");}@Testpublic void TestGetMaxIndex() {int index1 = StringUtil.getMaxIndex(null);System.out.println(index1);int index2 = StringUtil.getMaxIndex("admin");System.out.println(index2);Assert.assertEquals("方法有逻辑错误", 4, index2);}
}
  • 在测试方法之前执行的,常用来初始化资源
  • 在测试方法之后执行的,常用来释放资源

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

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

相关文章

【计算机】CPU,芯片以及操作系统概述

1.CPU 什么是CPU? CPU(Central Processing Unit)是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。 CPU的工作流程? CPU 的工作流程分为以下 5 个阶段:取指令…

苹果ios系统ipa文件企业签名是什么?优势是什么?什么场合需要应用到?

企业签名是苹果开发者计划中的一种签名类型,允许企业开发者签署和分发企业内部使用的应用程序,而无需通过App Store进行公开发布。通过企业签名,企业可以在内部部署自己的应用程序,以满足特定的业务需求。 企业签名能够做到以下…

【JVM】 类加载机制、类加载器、双亲委派模型详解

文章目录 前言一、类加载机制二、类加载器三、双亲委派模型总结 前言 📕各位读者好, 我是小陈, 这是我的个人主页 📗小陈还在持续努力学习编程, 努力通过博客输出所学知识 📘如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽 &#x1f4d…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

嵌入式Linux应用开发-驱动大全-同步与互斥①

嵌入式Linux应用开发-驱动大全-同步与互斥① 第一章 同步与互斥①1.1 内联汇编1.1.1 C语言实现加法1.1.2 使用汇编函数实现加法1.1.3 内联汇编语法1.1.4 编写内联汇编实现加法1.1.5 earlyclobber的例子 1.2 同步与互斥的失败例子1.2.1 失败例子11.2.2 失败例子21.2.3 失败例子3…

【无标题】如何去掉柱状图后面的网格以及如何为柱状图设置指定颜色

在绘制柱状图时,通过 plt.grid(False) 可以去掉图中的网格线。将这行代码添加在 plt.show() 之前,即可在保存图片时去掉网格线。 import seaborn as sns import numpy as np import matplotlib.pyplot as plt import random# 准备数据 x_data [ASSISTm…

Vue3 defineProps使用

MyTag.vue <script setup> import { ref, nextTick, defineProps, defineEmits } from "vue"; const props defineProps({flag: Boolean,title: String, }); // 写成这样也可以 // const props defineProps(["flag", "title"]);const e…

互联网Java工程师面试题·MyBatis 篇·第二弹

目录 16、Xml 映射文件中&#xff0c;除了常见的 select|insert|updae|delete标签之外&#xff0c;还有哪些标签&#xff1f; 17、Mybatis 的 Xml 映射文件中&#xff0c;不同的 Xml 映射文件&#xff0c;id 是否可以重复&#xff1f; 18、为什么说 Mybatis 是半自动 ORM 映射…

2023年中国体育赛事行业现状及趋势分析:体育与科技逐步融合,推动产业高质量发展[图]

体育赛事运营是指组织体育赛事或获取赛事版权&#xff0c;并进行赛事推广营销、运营管理等一系列商业运作的运营活动。体育赛事运营相关业务主要包括赛事运营与营销、赛事版权运营两个部分。 体育赛事运营行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#x…

5.外部中断

中断初始化配置步骤&#xff1a; IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数&#xff1a; #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…

开源白板工具 Excalidraw 架构解读

本文讲解开源白板工具 Excalidraw 的架构设计。 版本 0.16.1 技术栈 Vite React TypeScript Yarn Husky。 脚手架原来是用的是 Create React App&#xff0c;但这个脚手架已经不维护了&#xff0c;一年多没发布新版本了。 目前市面上比较流行的 React 脚手架是 Vite&…

RabbitMQ的基本介绍

什么是MQ 本质是一个队列&#xff0c;只不过队列中存放的信息是message罢了&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递信息。在互联网架构中&#xff0c;MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后&#xff0c;信息发送…

嵌入式Linux应用开发-驱动大全-同步与互斥④

嵌入式Linux应用开发-驱动大全-同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 up函数的…

户用储能争斗:华宝新能“稳”、正浩科技“快”、安克创新“急”

便携式储能市场一片红海&#xff0c;户用储能&#xff08;家用储能&#xff09;成为储能企业新的“格斗场”。 过去两年&#xff0c;房车游、户外旅行、露营等旅游项目热度攀升&#xff0c;户外用电需求与日俱增&#xff0c;嗅觉敏锐的资本方相继加码便携储能市场&#xff0c;越…

玩转Mysql系列 - 第26篇:聊聊mysql如何实现分布式锁?

这是Mysql系列第26篇。 本篇我们使用mysql实现一个分布式锁。 分布式锁的功能 分布式锁使用者位于不同的机器中&#xff0c;锁获取成功之后&#xff0c;才可以对共享资源进行操作 锁具有重入的功能&#xff1a;即一个使用者可以多次获取某个锁 获取锁有超时的功能&#xff…

【贪心的商人】python实现-附ChatGPT解析

1.题目 贪心的商人 知识点:贪心 时间限制:1s 空间限制: 256MB 限定语言:不限 题目描述: 商人经营一家店铺,有number种商品,由于仓库限制 每件商品的最大持有数量是item[index], 每种商品的价格在每天是item_price[item_index][day], 通过对商品的买进和卖出获取利润,请给…

去外地旅游遇到的问题和心得

去外地旅游核心的问题是&#xff1a;住、行、食三块&#xff0c;由于去一个陌生的城市&#xff0c;一切都不熟悉&#xff0c;也没有认识的人&#xff0c;所以一切都需要自己解决&#xff0c;而住、行、食就成最核心的问题&#xff0c;下面分别说明&#xff1a; 1 住&#xff0…

WordPress批量给没有图片的文章自动添加图片配图

每次写文章配图巨麻烦&#xff0c;特别是有些人批量采集文章&#xff0c;不可能一个个去配图&#xff0c;那么有没有什么方法能批量给WordPress没有图片的文章自动添加图片&#xff0c;并且还要自动识别该文章有没有图片&#xff0c;如果没有图片才自动配图&#xff0c;如果有图…

用于工业物联网和自动化的 Apache Kafka、KSQL 和 Apache PLC4

由于单一系统和专有协议&#xff0c;数据集成和处理是工业物联网&#xff08;IIoT&#xff0c;又名工业 4.0 或自动化工业&#xff09;中的巨大挑战。Apache Kafka、其生态系统&#xff08;Kafka Connect、KSQL&#xff09;和 Apache PLC4X 是以可扩展、可靠和灵活的方式实现端…

基础-MVP定位-找边算子

找边算子基于卡尺工具来检测边缘特征。 参数配置和应用&#xff1a; 期望的线段&#xff0c; 可以直接配置卡尺的起始点和终止点坐标&#xff0c;将卡尺移动到指定边上。 蓝色线为期望线&#xff0c;绿色线为找到的边。 找边模式&#xff1a;0/1 卡尺配置&#xff1a;设置 …