Java测试、文件解析与设计模式

单元测试

测试分类

边界测试

压力测试

功能测试

黑盒测试 完全不关心内部的代码结构

白盒测试 要关心内部代码的结构,去看代码的质量

灰盒测试 关心重要代码的质量

单元测试

自己测试看流程能够通畅

main方法运行去测试 一个类中只能存在一个主方法

第三方使用junit测试 在方法上方打上@Test的注解 导包

junit的版本3 4 5 现在的用4

绿条表示测试通过 整个代码没有问题

红条表示测试不通过 代码有问题

单元测试方法的特点:

没有返回值

不能代参数

修饰符只能为public

如果存在很多测试的方法而只想测试某一个,选中方法名然后选择运行即可

其他注解:

@Before注解:表示在测试方法运行之前执行

@After注解:表示在测试方法运行之后执行

不受位置的影响,不能单独运行,必须要有测试方法才能运行

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.ifueen.classtest.junit;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class AutoTest {


@After
public void ends() {
System.out.println("我好了");
}
@Test
public void test() {
System.out.println("无内鬼");
}

@Test
public void test1() {
System.out.println("你不要再这样子啦");
}
@Before
public void strat() {
System.out.println("我要开始咯");
}


}

工具类

作用:提高工作效率 增加了代码的复用性

工具类的包名一般用util结尾

创建的工具类作用范围只作用在当前项目中 如果其他项目需要使用 此时将该类打成jar包

jar包其实就是字节码文件的压缩包

资源文件

硬编码:将某些可能经常修改的账号或者密码等信息,写死到代码中,一旦修改就需要修改相应的java类

资源文件:用来管理项目相关的配置信息

resources:用来存放配置文件的源文件

资源文件格式后缀 .properties(健值对形式) .xml .yml

读取方式

1.传统读取方式,自己创建文件流,获取文件路径

2.利用字节码来获取流 文件路径直接是/资源文件名

3.利用类加载器来获取流

Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.ifueen.classtest.prop;


import java.io.InputStream;
import java.util.Properties;

public class PropTest {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
test("admin", "root");
}
public static void test(String name,String pwd) throws Exception {
//1.传统读取方式
/*Properties properties = new Properties(); //创建Properties对象
FileInputStream inputStream = new FileInputStream("resources/login.properties"); //读取文件路径
properties.load(inputStream);
if (properties.getProperty("username").equals(name)&&properties.getProperty("pwd").equals(pwd)) {
System.out.println("登录成功,你马上就可以见到山泥若了");
}else {
System.out.println("密码都记不住还想看猪猪?");
}*/

//2.利用字节码来获取流
/*Properties properties = new Properties();
Class<PropTest> class1 = PropTest.class; //获取当前的字节流
InputStream stream = class1.getResourceAsStream("/resources/login.properties"); //这里可以不用写文件夹名
properties.load(stream); //加载
if (properties.getProperty("username").equals(name)&&properties.getProperty("pwd").equals(pwd)) {
System.out.println("登录成功,你马上就可以见到山泥若了");
}else{
System.out.println("密码都记不住还想看猪猪?");
}*/

//3.使用类加载器来获取
//通过字节码来获取加载器
/*Properties properties = new Properties(); //创建Properties对象
Class<PropTest> class1= PropTest.class; //获取到当前类的字节码路径
ClassLoader classLoader = class1.getClassLoader(); //拿到类加载器
InputStream inputStream = classLoader.getResourceAsStream("resources/login.properties"); //拿到输入流
properties.load(inputStream); //加载
if (properties.getProperty("username").equals(name)&&properties.getProperty("pwd").equals(pwd)) {
System.out.println("登录成功,你马上就可以见到山泥若了");
}else{
System.out.println("密码都记不住还想看猪猪?");
}*/

//通过当前线程来获取类加载器
Properties properties = new Properties(); //创建Properties对象
ClassLoader loader = Thread.currentThread().getContextClassLoader(); //通过当前线程获取到类加载器
InputStream inputStream = loader.getResourceAsStream("resources/login.properties"); //拿到输入流
properties.load(inputStream); //加载
if (properties.getProperty("username").equals(name)&&properties.getProperty("pwd").equals(pwd)) {
System.out.println("登录成功,你马上就可以见到山泥若了");
}else{
System.out.println("密码都记不住还想看猪猪?");
}

}
}

设计模

设计模式分为

单例模式 1.饿汉模式 2.懒汉模式 3.优化懒汉模式

ThreadLocal(面试题)

给懒汉模式增加线程安全性而且提高效率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.ifueen.classtest.singleton;

public class ThreadLocalSingleton {
/*
* ThreadLocal 会给每一个线程创建一个本地的变量副本
* */
private ThreadLocalSingleton(){};
private static ThreadLocal<ThreadLocalSingleton> threadLocal = new ThreadLocal<ThreadLocalSingleton>(){
protected ThreadLocalSingleton initialValue() {
return new ThreadLocalSingleton(); //新建本地的副本对象
};
};
public static ThreadLocalSingleton getThreadLocalSingleton() {
return threadLocal.get(); //获取threadLocal对象
}

}

工厂模式

装饰者模式

适配器模式

❤赏点钱让我买杯快乐水8❤