Java进阶-测试方法

来学习一下软件测试相关的方法,了解一下黑盒测试和白盒测试,以及后面要用到的JUnit单元测试。JUnit单元测试也属于白盒测试,这次内容较少且相对简单。
在这里插入图片描述

一、软件测试方法

1、黑盒测试

不需要写代码,给输入值,看程序是否能够输出期望的值。“黑盒”两字非常形象,简单理解,往黑盒子里面丢一堆测试数据,看看能否出来对应的值。

2、白盒测试

需要写代码,关注程序具体的执行流程。“白盒”两字也非常形象,因为“白盒”即透明可见的,所以就需要事先编写程序,关注具体的执行流程。

3、JUnit单元测试

3.1 单元测试

针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此可以理解为对单个Java方法的测试。

测试驱动开发(TDD):编写接口---->编写测试---->编写实现---->运行测试

3.2 JUnit单元测试步骤
1.定义一个测试类(测试用例)
- 测试类名:被测试的类名Test,如CalculatorTest
- 包名:xxx.xxx.xx.test,如cn.itweb.test
2.定义测试方法:可以独立运行
- 方法名:test测试的方法名,如testAdd()
- 返回值:void
- 参数列表:空参
3.给方法加@Test
4.导入junit依赖环境
3.3 判断结果
红色:失败
绿色:成功通常使用断言操作处理结果
- Assert.assertEquals(期望的结果,运算的结果)
3.4 补充(两个注解)
@Before
- 修饰的方法会在测试方法之前被自动执行(一般用于资源申请)
@After
- 修饰的方法会在测试方法之后被自动执行(一般用于资源释放)
3.5 示例

1)定义一个包含加减法的计算器的类

package com.itweb.junit;public class Calculator { //定义一个计算器类public int add(int a,int b){ //定义加法//int i=3/0; 报除0异常,出现红色报错return a+b;}public int sub(int a,int b){ //定义减法return a-b;}
}

2)对比
假如按以前的方法创建测试类,当要测试的方法较多时比较麻烦(实际开发中基本不用)

package com.itweb.junit;
// 按以前创建测试类的方法,当要测试的方法较多时比较麻烦
public class CalculatorTest {public static void main(String[] args) {Calculator c=new Calculator(); // 创建对象int result= c.add(1,2); // 调用int result1=c.sub(1,2);System.out.println(result);System.out.println(result1);}
}

运行结果

3
-1

使用JUnit单元测试(在开发中常用)

package com.itweb.junit;import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;public class CalculatorTest {/*** 初始化方法:* 用于资源申请,所有测试方法在执行之前都会先执行该方法*/@Beforepublic void init(){System.out.println("init...");}/*** 释放资源方法:* 在所有测试方法执行完后,都会自动执行该方法*/@Afterpublic void close(){System.out.println("close...");}// 以下为对Calculator类中两个方法的测试@Testpublic void testAdd(){ // 测试add方法//System.out.println("我被执行了");System.out.println("testAdd...");Calculator c=new Calculator(); // 创建计算器对象int result=c.add(1,2); // 调用add方法//System.out.println(result);// 断言,断言结果为3,和实际输出值比较,若不相等则爆红Assert.assertEquals(3,result); // 断言成功//Assert.assertEquals(2,result); 断言失败,爆红}@Testpublic void testSub(){ // 测试sub方法Calculator c=new Calculator();int result=c.sub(1,2);Assert.assertEquals(-1,result); // 断言成功}
}

运行结果(右键运行testAdd)

init...
testAdd...
close...

程序的运行截图及相关说明
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可能会遇到的问题及说明
a、包名按com.itweb.junit命名后按anter不显示层级结构

点击小齿轮,因为我的可以正常显示,按我的这样设置就行,如下图

在这里插入图片描述

b、首次添加注解报红

按提示(Alt+Enter–>Import class)导入对应的包和依赖即可,如junit包和包下对应用到的类

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

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

相关文章

【Tomcat】The CATALINA_HOME environment variable is not defined correctly

文章目录 一、问题二、解决办法三、优化 一、问题 运行绿色版Tomcat时,单击apache-tomcat-9.0.27\bin\startup.bat时窗口一闪而过。 检查JAVA_HOME环境变量,可以发现并没有问题。 为了检查错误,将startup.bat程序使用文本编辑器打开&#x…

单片机独立按键控制LED状态

一、前言 这幅图是按键的抖动与时间的联系 按键抖动:对于机械开关,当机械鮑点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开,所以在开关闭合及断开的…

《JAVA与模式》之调停者模式

系列文章目录 文章目录 系列文章目录前言一、为什么需要调停者二、调停者模式的结构三、使用电脑来看电影 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…

【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素

作者推荐 视频算法专题 本文涉及的基础知识点 二分查找算法合集 LeetCode378. 有序矩阵中第 K 小的元素 给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素&…

深度学习_15_过拟合欠拟合

过拟合和欠拟合 过拟合和欠拟合是训练模型中常会发生的事,如所要识别手势过于复杂,如五角星手势,那就需要更改高级更复杂的模型去训练,若用比较简单模型去训练,就会导致模型未能抓住手势的全部特征,那简单…

了解游戏中的数据同步

目录 数据同步 通过比较来看状态同步和帧同步 状态同步 帧同步 帧同步实现需要的条件 两者相比较 数据同步 在联机游戏中,我的操作和数据要同步给同一局游戏中其他所有玩家,其他玩家的操作和数据也会同步给我。这叫做数据同步,目前数据…

《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子:IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

代码随想录Day66 | 图的DFS与BFS

代码随想录Day66 | 图的DFS与BFS DFS797.所有可能的路径无向图和有向图的处理 BFS200.岛屿数量 DFS 文档讲解:代码随想录 视频讲解: 状态 本质上就是回溯算法。 void dfs(参数) {if (终止条件) {存放结果;return;}for (选择:本节点所连接的…

猴子吃桃问题(python版)

文章预览: 题目python解法一:运行结果 python解法二:运行结果 python解法三:运行结果 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早…

超全面!Linux学习资料大合集,21套从入门到进阶,看这篇就够了

本文将为那些渴望学习Linux,但又缺乏相应资料和方向的朋友,提供21套Linux优质资料,包含入门到进阶,希望能对大家有所帮助。 此合集内容及其丰富,涉及方面颇多,不仅适合Linux入门学习的朋友,运维…

水电站数字孪生:水力发电在可视化领域的应用

自水轮机的早期发明被用于农业灌溉,到 18 世纪末期的工业革命促使水轮机技术的改良,再到 19 世纪末水利发电的崛起,直至今日,智慧水电站数字孪生技术正处于蓬勃发展之中。通过整合物联网、大数据、云计算等现代信息技术&#xff0…

【Zookeeper】ZooKeeper的一些重要功能和作用

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 随着分布式系统的普及和应用场景的不断增加,构建可靠、高效的分布式系统变得愈发重要。然…