单元测试
.
测试分类
什么是测试?
测试的目的是尽可能多的发现软件中存在的BUG,而不是为了隐藏BUG。事实上测试有很多种类,比如:边界测试,压力测试,性能测试等
黑盒测试
黑盒测试也叫功能测试,主要关注软件每个功能是否实现,并不关注软件代码是否有错误;测试人员完全不考虑程序内部的逻辑结构和内部特性;任何人都可以做,把程序交给测试人员,到处随便点,看程序是否出错
白盒测试
白盒测试与黑盒测试相反,白盒测试主要检查软件内部逻辑结构、设计等是否符合规定;该测试人员要看懂别人写的代码,看懂之后,自己写一份代码测试别人写的代码
灰盒测试
灰盒测试是介于黑盒和白盒之间的一种测试,既关注功能也关注内部逻辑的实现,但并没有白盒测试那么细致;需要灰盒测试的目的是因为白盒测试效率较低
单元测试
(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确;比如一个方法是否正确,比如是否达到想要的效果等;这也是我们开发者最常用的一种方式;就程序员做自测用的
单元测试语法结构
public class Junit4Test {@Testpublic void xxxTest(){}
}
该测试语法注意事项
- 访问权限修饰符必须是public修饰
- 返回值类型必须是void
- 方法形参列表必须为空
- 一个类中可以有多个@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