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

Java单元测试和设计模式

单元测试

.

测试分类

什么是测试?

测试的目的是尽可能多的发现软件中存在的BUG,而不是为了隐藏BUG。事实上测试有很多种类,比如:边界测试,压力测试,性能测试等

黑盒测试

黑盒测试也叫功能测试,主要关注软件每个功能是否实现,并不关注软件代码是否有错误;测试人员完全不考虑程序内部的逻辑结构和内部特性;任何人都可以做,把程序交给测试人员,到处随便点,看程序是否出错

白盒测试

白盒测试与黑盒测试相反,白盒测试主要检查软件内部逻辑结构、设计等是否符合规定;该测试人员要看懂别人写的代码,看懂之后,自己写一份代码测试别人写的代码

灰盒测试

灰盒测试是介于黑盒和白盒之间的一种测试,既关注功能也关注内部逻辑的实现,但并没有白盒测试那么细致;需要灰盒测试的目的是因为白盒测试效率较低

单元测试

(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确;比如一个方法是否正确,比如是否达到想要的效果等;这也是我们开发者最常用的一种方式;就程序员做自测用的

单元测试语法结构

public class Junit4Test {@Testpublic void xxxTest(){}
}

该测试语法注意事项

  1. 访问权限修饰符必须是public修饰
  2. 返回值类型必须是void
  3. 方法形参列表必须为空
  4. 一个类中可以有多个@Test方法,可单独或全部运行

单元测试常见的注解

A、@Before:它在执行@Test对应的方法之前执行

B、@Test:执行目标方法

C、@After:它在执行@Test对应的方法之后执行

public class Junit4Test {//一般用于关闭资源@Afterpublic void xxxAfter(){System.out.println("After");}@Testpublic void xxxTest(){//实际开发中:初始化+核心代码+关闭资源,都可以放这里面System.out.println("Test");}//一般用于初始化@Beforepublic void xxxBefore(){System.out.println("Before");}*** 执行优先顺序结果:* Before* Test* After*/
}

单元测试的作用

一个类里面可以当多个main方法用,让程序更加健壮安全

自定义工具类

如何写自定义工具类?对比Arrays和Collections工具类的共性,可以看出相对规则:

①、不能让外部类实例化工具类【无构造方法,也就是private修饰的构造方法】

②、该类中的方法都是静态的【用static修饰的方法】

模拟实例——自定义工具类

/*** 自定义工具类* 		满足上面的相对规则条件*/
public class CustomUtilityClass {//私有构造private CustomUtilityClass(){}//判断该字符串是否为空并且长度为0,true为空,false不为空public static Boolean isNull(String str){if (str == null || ("".equals(str.trim()) && str.length() == 0)){return true;}return false;}
}

使用自定义的工具类

public class Junit4Test {@Testpublic void xxxTest(){Boolean xX = CustomUtilityClass.isNull(" ");//这里长度不为0,所以falseSystem.out.println(xX);//false}
}

自定义生成jar包——导入/导出

简单理解jar包就是字节码的集合包【装的全是.class】

生成jar包,导出:

第一步:Project Structure->Artifacts->Add(+号)->JAR->From modules with depen…

在这里插入图片描述
在这里插入图片描述

From modules with depen…是自定义或全部项目

第二步:Main Class,其它不用改动

在这里插入图片描述
在这里插入图片描述
一般把项目名下存放jar包文件存放的文件夹名字用lib

第三步:Build->Build Artifacts

在这里插入图片描述
在这里插入图片描述

导入,使用生成的jar包:

在这里插入图片描述

在这里插入图片描述
点击"Add as Library…" 产生关联之后,jar是能打开的,如果没有关联是打不开的

在这里插入图片描述
因为这里是同一个项目,打成jar包之后,这里把CustomUtilityClass类删了,然后直接在测试类中,CustomUtilityClass点方法,直接就可以用

在这里插入图片描述

PS:点击"Add as Library…" 产生关联之后,删除关联

在这里插入图片描述

PS:打jar错了,这里直接删除,再手动删除打jar生成的位置

在这里插入图片描述
在这里插入图片描述

设计模式

最主要的设计模式——单例模式【三种创建方式】

单:一个

例:实例

模式:一种结构

单例模式:请设计一种结构只能创建一个对象,创建对象的个数必须有且仅有一个

单例模式之——饿汉模式【优势:会主动创建对象,因为static修饰的,类加载时会被执行】

A、私有化构造方法【才能防止外部类随意new对象】

B、提供一个对象,该对象被private static final 修饰,确保唯一

C、提供一个公共静态的方法,用于返回对象 【静态区域只能访问静态成员】

PS:跟Runtime类如出一辙

在这里插入图片描述

模仿——单例模式之饿汉模式

/*** 单例模式——饿汉模式*/
public class HungryManMode {//第二步:私有构造之后,外部类一个对象也创建不了,就需要当前类创建对象private static final HungryManMode hungry = new HungryManMode
http://www.dtcms.com/a/311117.html

相关文章:

  • uniapp 富文本rich-text 文本首行缩进和图片居中
  • Day 29: 复习
  • 音视频学习(四十五):声音的产生
  • 数据集-目标检测系列- 地球仪 数据集 globe>> DataBall
  • 前端应用权限设计面面观
  • 网络基础实操篇-05-路由基础-最佳实践
  • 【机器学习】非线性分类算法(上):KNN(基于距离相似度)与朴素(特征独立)贝叶斯(基于概率统计)
  • MybatisPlus-逻辑删除
  • 【ElementPlus】深入探索ElementPlus:前端界面的全能组件库
  • 【Conda】配置Conda镜像源
  • 【Linux】vim—基操
  • 网易云音乐硬刚腾讯系!起诉SM娱乐滥用市场支配地位
  • 【深度学习②】| DNN篇
  • SmartCLIP:具有识别保证的模块化视觉-语言对齐
  • 基于OAuth2与JWT的微服务API安全实战经验分享
  • Java 垃圾回收机制:自动化内存管理的艺术与科学
  • Python 程序设计讲义(54):Python 的函数——函数概述
  • Linux iptables防火墙操作
  • 一种基于入侵杂草优化算法(IWO)的聚类算法,并与K-Means、高斯混合模型(GMM)进行对比,Matlab
  • 网安-中间件(updating..)
  • HarmonyOS NEXT系列之定制化构建制品
  • HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践
  • 电子电气架构 --- 汽车网络安全概述
  • lumerical——布拉格光栅(2)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)
  • LLM隐藏层状态: outputs.hidden_states 是 MLP Residual 还是 Layer Norm
  • 【前端:Html】--1.1.基础语法
  • 在 Elasticsearch 中落地 Learning to Rank(LTR)
  • 修改git commit 提交版本的描述信息
  • 【算法笔记 day four】二分查找