JUnit总结
该总结来自幕课网“JUnit-Java单元测试必备工具”
- 以JUnit4为例
JUnit简介
JUnit属于xUnit中的一个,xUnit是一套基于测试驱动开发的测试框架,还包括如PythonUnit,CppUnit等。
编写测试代码应符合的规则
1、测试方法上必须使用@Test进行修饰
2、测试方法必须使用public void进行修饰,不能带任何的参数
3、新建一个源代码目录用于存放测试代码
4、测试类的包应该和被测试类保持一致
5、测试单元中的每个方法必须可以独立测试,测试方法间不能有任何依赖
6、测试类使用Test作为类名的后缀(非必须)
7、测试方法使用test作为方法名的前缀(非必须)
测试用例不是用来证明你是正确的,而是用来证明你没有错
测试用例用来达到想要的预期结果,但对于逻辑错误无能为力
单元测试时failure和error的区别
1、Failure一般由单元测试使用的断言方法判断失败引起的,这表示测试点发生了问题,就是说程序输出的结果和我们预期不一样
2、error是由代码异常引起的,他可能产生于测试代码本身的错误,也可能来自被测试代码的隐藏bug
3、测试用例不是用来证明你是正确的,而是用来证明你没有错
JUnit测试常用注解
1、@BeforeClass修饰的方法在所用方法被调用之前执行,且该方法是静态的,所以当测试类被加载后就会执行它,且内存中只会存在一份它的实例,适合与加载配置文件
2、@AfterClass修饰的方法在所有方法被调用之后执行,且该方法是静态的,通常用于对资源的清理,如关闭数据库的连接
3、@Before和@After会在每个测试方法的前后各执行一次
4、@Test是将一个普通方法修饰为一个测试方法
@Test(expected=XX.class)提供处理异常的机制
@Test(timeout=毫秒)提供超时时间限制
5、@Ignore所修饰的测试方法会被测试运行器忽略(即不会被执行)
6、@RunWith可以更改测试运行器。通过继承org.junt.runner.Runner能够进行自定义测试运行器
断言
相见junit的api文档中assert部分,提供丰富的方法
测试套件
1、测试套件用于组织测试类一起运行
2、作为测试套件的入口类,该类不能包含其他的方法
3、更改测试运行器为Suite.class
4、将要测试的类作为数组传入Suite.SuiteClasses({这里写入测试类的class数组})
Junit4的参数化设置
用于提高测试代码的可复用性
1、更改默认的测试运行器RunWith(Parameterized.class)
2、声明变量来存放预期值和结果值
3、声明一个返回值为Collection的公共静态方法,并使用@Parameterized进行修饰
4、为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值