A022_单元测试_jar_资源文件_设计模式


Java基础加强

1.内容介绍

1. 单元测试(掌握)
2. 工具类jar包封装和使用(掌握)
3. 资源文件(Properties)解析(重点掌握)
4. 设计模式(了解)

2.单元测试

2.1 测试概述【了解】

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

2.2 黑盒测试

黑盒测试也叫功能测试,主要关注软件每个功能是否实现,并不关注软件代码是否有错误。测试人员完全不考虑程序内部的逻辑结构和内部特性。

2.3 白盒测试

白盒测试与黑盒测试相反,白盒测试主要检查软件内部逻辑结构、设计等是否符合规定。
用代码来测试你的代码。

2.4 灰盒测试

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

2.5 单元测试

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

2.6 代码实现Junit4【掌握】

之前有Jinut3但是我们现在主流的都用Junit4,对于Junit3我们不做阐述,但是得知道有这么个东西,Junit4是使用注解来进行测试的,而且不需要像Junit3继承TestCase类,在Junit4中如何标识方法是测试方法呢?使用@Test注解
示例:

@Test
public  void  testEat(){
}

如上就标识了一个方法为测试方法,测试方法是公共无参无返回值的
【注意事项】
1.Junit4中的测试方法上都必须加上@Test才能被标识为测试方法
2.测试方法中没有返回值和参数,因为没有必要
3.测试方法必须是公开的
4.其他测试方法若有问题,也可能影响到当前测试方法
5.测试类命名XxxTest
6.测试方法命名public void testXxx();方法上面加上注解@Test
在软件开发过程中,有很多阶段,其中在编码阶段中,有一个程序员自测环节-单元测试(Junit4)。
涉及到以下注解:
@Test 用在方法申明之上,表示右键可以执行测试该方法。
方法执行完毕后,显示绿色表示测试成功
红色表示测试失败
@Before每次调用测试方法前都会执行 ,一般用于初始化加载某些资源,例如:加载jdbc驱动
@After 每次调用测试方法后都会执行,一般用于释放资源,例如jdbc释放资源。

3.工具类-jar-classpath

3.1 工具类

测试类所在的类和包命名,一般以util结尾 XxxUtils
工具类一般以静态方法或者单例模式创建
需求:以判断字符串是否为空的代码,创建工具类

3.2 jar包

简单的说jar包就是一个class文件的压缩包和zip、rar性质是一样的。
Jar包实际上大家已经在使用了,只是大家可能没有注意到而已。比如我们创建一个java程序,必不可少的就是关于jdk的jar包。

讨论:
JDK中的jar包是官方提供的,我们就能直接调用使用,那么我们在以后开发过程中,是不是可以将工具类打包成jar包在其他项目中使用呢?

事实上java程序的运行最终只需要对应的.class文件,我们可以将对应的工具类打包成jar文件,然后在其他的工程上继续使用。

3.3 Eclipse如何导出jar包

选中对应的工具类,右键—>Export【】—>选中java目录下的,JAR File—>Next—>选择导出路径—>Finish
事实上,在导出jar包的时候可以选中一个java文件,也可以选中一个包,甚至整个项目打包成jar,以上是选中的一个java文件

3.4 Java工程下如何使用jar包
  1. 找到相应的jar包
  2. 在工程下面新建一个lib文件夹
  3. 将jar包拷贝到lib文件夹下面
  4. 将jar配置到环境变量(classpath)中
    在这里插入图片描述
    如果看到下面的结构就OK:
    在这里插入图片描述
3.5 classpath

众所周知,Eclipse中我们的java代码编译之后生成的.class文件最终都会生成到项目的bin文件夹下
讨论:
可不可以修改.class文件最终生成的位置?如果能修改,那么我们如何修改?

3.5.1 修改.class文件生成的位置

选中项目右键—>Build Path—>Configure Build Path—>弹出框右侧Java Build Path中选中Source,在Source页面下有一个生成路径,可以修改当前生成路径

讨论:
当前的配置修改生效之后,是保存在什么地方呢?

3.5.2 .classpath文件

Eclipse创建的 每一个项目中都有一个.classpath文件,打开这个.classpath文件可以看到如下界面
在这里插入图片描述
<classpathentry kind="src" path="src"/>
kind=“src”:代表key, 当它是src的时候(资源文件夹)
path=“src”: 代表值,这个src代表一个路径(文件夹)
现在src所代表的文件夹就是一个资源文件夹
注释:资源文件夹【】里面的内容才会帮我们编译成classes文件

3.6 解决红色感叹号

在这里插入图片描述
综上,大家可以发现我们在eclipse中build path对当前项目作出的一些操作,最终都会反应到.classpath这个文件上
讨论:
项目上出现红色感叹号,除了直接从.classpath文件里手动删除之外,还可以怎么做?

3.7 小结

1.什么是工具类
2.jar包导出及使用
3.红色感叹号因何而成如何解决

4.Properties资源文件解析

4.1 资源文件解析概述

资源文件也可以看成是配置文件,一般的形式有两种:properties形式和XML形式
properties文件中数据的存储是以键值对的形式存在,每一行为一条数据,只能存储字符串形式的数据,Properties文件中值的部分任意字符都会被当做值的一部分,尤其是空格

资源文件的作用:解决硬编码问题【代码逻辑中写死的代码】

4.2 代码实现

代码实现主要针对资源文件的读取,针对properties文件的读取是使用JDK中的Properties类进行数据读取
Properties类语法

load(字节输入流)
	加载资源文件
getProperty(key)
	返回资源文件中对应key中的值【字符串】,若key不存在则返回null
getProperty(key,默认值)
	返回资源文件中对应key中的值【字符串】,若key不存在则返回默认值

读取步骤:
1.创建Properties对象
2.加载资源文件流
3.读取数据

事实上,针对资源文件的解析,存在三种方式:
传统IO方式、
字节码对象获取流、
类加载器获取流
这三种方式的变化,主要集中在流的获取上

4.2.1 传统IO方式
Properties properties = new Properties();
properties.load(new FileInputStream(文件路径));
4.2.2 字节码对象获取流

问题1:什么是字节码对象?
字节码对象方式获取流,文件最终必须被编译到class文件存放的位置
字节码对象获取流参数的规则:前必须带/,若资源文件没有再包中,包的路径可以省略

类名.class.getResourceAsStream(/包路径/文件名)
4.2.3 类加载器获取流

问题1:什么是类加载器?
通过类加载器获取流,那么首要是获取到类加载器,获取类加载器的方式有很多种,以下介绍两种:
4.2.3.1.字节码对象方式获取类加载器

字节码对象.getClassLoader()

4.2.3.2.线程方式获取类加载器
线程方式获取类加载器稍微比字节码对象获取类加载器稍显复杂,必须先获取当前线程,通过当前线程获取类加载器

Thread.currentThread().getContextClassLoader()

获取流语法:

类加载器对象.getResourceAsStream(包名/文件名)

类加载器获取流的时候,路径最前方不需要书写/

5.设计模式

设计模式:直白的讲并不是代码,而是针对某类问题的通用设计解决方案,或者说是代码技巧
设计模式之间是可以相互嵌套使用的

5.1 单例模式

单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例

5.2 单例特征
  1. 对象构造私有化
  2. 私有静态当前类类型的字段
  3. 提供公共,静态对外的访问方法获取对象
5.2.1 饿汉

饿汉模式:实质上就是在类加载的时候即创建
饿汉模式线程安全,但是存在加载效率低下的问题
使用静态内部类块优化

5.2.2 懒汉

懒汉模式:即在需要的时候才创建对象返回
懒汉模式容易造成线程不安全问题,故可以同步代码块【synchronized】解决线程问题,但要使用双重校验,而且同步代码块这种方式效率比较低

5.3 ThreadLocal

早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。
语法

ThreadLocal对象.set(T value)
	给线程的局部变量设置值
ThreadLocal对象.get()
	获取线程局部变量中的值
5.4 装饰者模式

装饰模式指的是在不必改变原类文件和不使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
实现步骤 :通过对原类文件继承,对原有方法功能的基础上,实现新的功能

5.5 简单工厂模式

工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
实现步骤:使用工厂对象,根据传递的参数创建对象 解耦(耦合)低耦合高内聚

5.6 适配器模式

适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

6.课程总结

6.1 重点

jar包相关,jar是什么,jar包怎么用,红色感叹号如何解决

6.2 难点

设计模式没有具体的使用场景,先看懂代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值