一、四大类测试(黑盒测试和单元测试是我们经常用的)

1、黑盒测试:测试效率非常快,但是它不知道底层的实现

2、白盒测试:(测试人员写一段代码,去测已写好的程序)测试效率非常慢,但是足够安全(知道底层的实现)

3、灰盒测试:介于黑盒和白盒之间,他既做黑盒的是,又做白盒的事,只是写的测试代码没有白盒的那么复杂

4、单元测试:使用Junit3java5之前使用)和Junit4java5之后使用)来进行测试

二、单元测试

1为什么要学习单元测试

   原因: 我想在一个类中,可以测试多个方法,而以前的主方法不能办到这点,因为以前主方法里面,一个类只能测试一个方法

1、单元测试值Junit

Junit分为Junit3和Junit4,Junit4包含了Junit3,但是Junit3和Junit4的jar包都是第三方jar包,因此需要导包,导入jar包步骤:选中项目右键---》点击build path----》点击Add lirbary--->选中junit---》选中junit3--->点击finsh。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Junit3测试注意事项:

1、定义一个类,让这个类去继承TestCase;

   2、定义方法的时候,必须被public修饰符修饰,返回值类型必须void,方法的形参列表必须为空,方法名必须以test开头。

3、创建Junit3单元测试最见到的方法:直接新建Junit Test Case,在新建的时候选中版本;

4、如果要测试某个方法,一定要选中某个方法,然后再次进行测试

Junit4测试注意事项:

1、导入JUNIT4的jar包

2、在你要测的方法上面加一个注解  @Test

3、定义方法的时候,必须被public修饰符修饰,返回值类型必须void,方法的形参列表必须为空。

三、工具类

1定义工具类标准名

   标准的命名: 以 Utils  Helper 结尾的都表示工具类

2、如何写工具类?

   1. 要么所有的方法都是static修饰符修饰

   2. 要么该类使用单例模式来创建

四.资源文件

资源文件也可以看成是配置文件,一般的形式有二种:properties形式和XML形式:

   properties(Properties是一个集合)文件中数据的存储是以键值对的形式存在,每一行为一条数据,只能存储字符串形式的数据,Properties文件中值的部分任意字符都会被当做值的一部分,尤其是空格

注意:资源文件只有放在src及以下文件夹时,才是放在bin(字节码目录)目录下的。

   读取资源文件有4种方式:

  1. 通过字节输入流读取
java基础加强 随笔 第1张
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);
    }*/
View Code

 

   2. 通过字节码对象读取--------------->

   字节码对象:  类型.class    在jvm中只有1份

   通过指定的资源名,获取InputStream

    InputStream getResourceAsStream(String name)   Class类型中的方法

  注意:通过字节码获取资源文件(以.operties/.xml/.helper结尾的文件)时,

  path不以"/"开头时,默认从此类所在的包下获取资源文件;path以"/"开头时,

  则是从ClassPath(字节码文件的根)下开始获取资源文件。

java基础加强 随笔 第3张
/* 方式二:通过字节码对象读取
         * 注意:通过字节码获取资源文件(以.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);
    }
View Code

 

   3. 通过类加载器进行读取

   类加载器: 把字节码文件放到jvm中的那个东西,就叫做类加载器

   注意:

  当用类加载器获取资源文件时,path不能加"/",

  因为是从ClassPath根目录下获取,下面两种方式同理

java基础加强 随笔 第5张
/*
     * 方式三:通过类加载器进行读取
     *         注意:
     *             当用类加载器获取资源文件时,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);
    }*/
    
View Code

 

   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,使用静态代码块来创建对象-----------》专门来创建比较复杂

  的对象(因为不能直接在类中进行条件判断之类的代码,因此想要创建比较

  复杂的对象,在饿汉模式中只能使用静态代码块实现,而在懒汉模式中可以

  直接实现。

java基础加强 随笔 第7张
public class SingleInstance {
    private SingleInstance(){
    }
    private static SingleInstance instance = null;
    static{
        instance = new SingleInstance();
    }
    public static SingleInstance getInstance(){
        return instance;
    }

}
View Code

 

 

一、简单的工厂模式(factory)

简单工厂模式:

通过传递的参数,来要创建的不同对象

二、装饰器模式(decorate

装饰模式: 简单理解就是增强对象功能的,也就是当我们要使用某个方法时,发现功能不够,但是又不能修改源码,所以采用装饰器的方法

可以使用继承的方式,添加我们想要的功能,但是没有装饰器好

已经用到的装饰器有:

   new BufferedReader(new InputStreamReader(new FileInputStream(new  File("D:/"))));

三、适配器(adapter

适配器模式:把源对象转为目标对象

可以这样理解:继承了一个源对象的类,实现了一个目标对象的接口,也就是说覆写了接口的抽象方法,然后在里面调用父类的方法,实现两个类在一起工作。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄