原因: 我想在一个类中,可以测试多个方法,而以前的主方法不能办到这点,因为以前主方法里面,一个类只能测试一个方法
Junit分为Junit3和Junit4,Junit4包含了Junit3,但是Junit3和Junit4的jar包都是第三方jar包,因此需要导包,导入jar包步骤:选中项目右键---》点击build path----》点击Add lirbary--->选中junit---》选中junit3--->点击finsh。
Junit3测试注意事项:
1、定义一个类,让这个类去继承TestCase;
2、定义方法的时候,必须被public修饰符修饰,返回值类型必须void,方法的形参列表必须为空,方法名必须以test开头。
3、创建Junit3单元测试最见到的方法:直接新建Junit Test Case,在新建的时候选中版本;
4、如果要测试某个方法,一定要选中某个方法,然后再次进行测试
Junit4测试注意事项:
1、导入JUNIT4的jar包
2、在你要测的方法上面加一个注解 @Test
3、定义方法的时候,必须被public修饰符修饰,返回值类型必须void,方法的形参列表必须为空。
标准的命名: 以 Utils Helper 结尾的都表示工具类
1. 要么所有的方法都是static修饰符修饰
2. 要么该类使用单例模式来创建
资源文件也可以看成是配置文件,一般的形式有二种:properties形式和XML形式:
properties(Properties是一个集合)文件中数据的存储是以键值对的形式存在,每一行为一条数据,只能存储字符串形式的数据,Properties文件中值的部分任意字符都会被当做值的一部分,尤其是空格
注意:资源文件只有放在src及以下文件夹时,才是放在bin(字节码目录)目录下的。
读取资源文件有4种方式:
public class PropertiesTest{ /* * 方式一:通过字节输入流读取 * @Test public void testInputStream() throws IOException{ //创建一个properties对象,用来从输入流中读取属性列表 Properties properties = new Properties(); //创建一个字节输入流对象 这里有硬编码问题(将资源文件地址写死了) FileInputStream fileInputStream = new FileInputStream("D:/JAVEEworkspace/java加强/src/file.properties"); //将磁盘数据加载到内存 //void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 properties.load(fileInputStream); System.out.println(properties); }*/
2. 通过字节码对象读取--------------->
字节码对象: 类型.class 在jvm中只有1份
通过指定的资源名,获取InputStream
InputStream getResourceAsStream(String name) Class类型中的方法
注意:通过字节码获取资源文件(以.operties/.xml/.helper结尾的文件)时,
path不以"/"开头时,默认从此类所在的包下获取资源文件;path以"/"开头时,
则是从ClassPath(字节码文件的根)下开始获取资源文件。
/* 方式二:通过字节码对象读取 * 注意:通过字节码获取资源文件(以.operties/.xml/.helper结尾的文件)时, * path不以"/"开头时,默认从此类所在的包下获取资源文件;path以"/"开头时, * 则是从ClassPath(字节码文件的根)下开始获取资源文件。 */ @Test public void testInputStream() throws IOException{ Properties properties = new Properties(); //获取一个字节码对象 这里也有硬编码问题(将类名写死了) Class clz = Properties.class; /* InputStream getResourceAsStream(String /name) 查找具有给定名称的资源。 使用字节码对象获取给定名称资源的字节输入流 */ InputStream inputStream = clz.getResourceAsStream("/file.properties"); properties.load(inputStream); System.out.println(properties); }
3. 通过类加载器进行读取
类加载器: 把字节码文件放到jvm中的那个东西,就叫做类加载器
注意:
当用类加载器获取资源文件时,path不能加"/",
因为是从ClassPath根目录下获取,下面两种方式同理
/* * 方式三:通过类加载器进行读取 * 注意: * 当用类加载器获取资源文件时,path不能加"/", * 因为是从ClassPath根目录下获取,下面两种方式同理 * @Test public void testInputStream() throws IOException{ Properties properties = new Properties(); //创建一个字节码对象 这里也有硬编码问题(类名被写死了) Class clz = PropertiesTest.class; //创建一个类加载器 ClassLoader classLoader = clz.getClassLoader(); InputStream inputStream = classLoader.getResourceAsStream("file.properties"); properties.load(inputStream); System.out.println(properties); }*/
4. 通过当前线程获取类加载器进行读取,把资源文件中的内容读取到内存(Properties)中
推荐使用
//方式四:通过当前线程获取类加载器进行读取 推荐使用 @Test public void testInputStream1() throws IOException{ Thread currentThread = Thread.currentThread(); // ClassLoader getContextClassLoader() 返回该线程的上下文 ClassLoader。 ClassLoader contextClassLoader = currentThread.getContextClassLoader(); InputStream resourceAsStream = contextClassLoader.getResourceAsStream("file.properties"); Properties properties = new Properties(); properties.load(resourceAsStream); System.out.println(properties); }
单例模式:
1.饿汉模式
缺陷: 占内存
2.懒汉模式
饿汉模式:方式1写法
使用场景: 仅仅只适用于创建比较简单的对象,对于有些对象,不是一个new就能搞定,它要比较复杂的创建
饿汉模式:
方式2,使用静态代码块来创建对象-----------》专门来创建比较复杂
的对象(因为不能直接在类中进行条件判断之类的代码,因此想要创建比较
复杂的对象,在饿汉模式中只能使用静态代码块实现,而在懒汉模式中可以
直接实现。
public class SingleInstance { private SingleInstance(){ } private static SingleInstance instance = null; static{ instance = new SingleInstance(); } public static SingleInstance getInstance(){ return instance; } }
简单工厂模式:
通过传递的参数,来要创建的不同对象
装饰模式: 简单理解就是增强对象功能的,也就是当我们要使用某个方法时,发现功能不够,但是又不能修改源码,所以采用装饰器的方法
可以使用继承的方式,添加我们想要的功能,但是没有装饰器好
已经用到的装饰器有:
new BufferedReader(new InputStreamReader(new FileInputStream(new File("D:/"))));
适配器模式:把源对象转为目标对象
可以这样理解:继承了一个源对象的类,实现了一个目标对象的接口,也就是说覆写了接口的抽象方法,然后在里面调用父类的方法,实现两个类在一起工作。
原文:https://www.cnblogs.com/limengkun/p/10753961.html