写在最前面
作为一名Java开发来说,平时说到单元测试就会想到Junit框架。一直都是简单的会用一下,详细的说起来到说不出什么,故此专门查漏一番。
Junit介绍
JUnit 是一个 Java 编程语言的单元测试框架。是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。(xUnit是一系列测试框架的统称,最开始来源于一个叫做Smalltalk的SUnit框架。现在各种面向对象语言,Java、Python语等的类、对象等定义就是来源于Smalltalk语言,后来这些语言都借助了Sunit框架的理念,有很多通用的规范和特征,也就统称为xUnit。)
JUnit 促进了“先测试后编码”的理念,即可以先开发测试数据的一段代码,可以先测试,然后再应用。(but,一般我们都习惯了直接开发,即便是单元测试也是在开发完之后的工作了。😓)
Junit特点
- 是一个开放的资源框架,用于编写和运行测试。
- 提供注释来识别测试方法。
- 提供断言来测试预期结果。
- 提供测试运行来运行测试。
- 优雅简洁;测试可以自动运行并且检查自身结果并提供即时反馈。
- 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。
单元测试用例
既然Junit是Java编程语言的单元测试框架。那什么是单元测试呢?
廖雪峰给的解释是,单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
单元测试要求
一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。
每一项需求至少需要两个单元测试用例:一个正检验,一个负检验。如果一个需求有子需求,每一个子需求必须至少有正检验和负检验两个测试用例。
Junit测试框架
Junit是一个回归测试框架。具有以下重要特性:测试工具、测试套件、测试运行器、测试分类
测试工具
测试工具是一整套固定的工具,用于基线测试。测试工具的目的是为了确保测试能够在共享且固定的环境中运行,因此保证测试结果的可重复性。它包括:
在所有测试调用指令发起前的 setUp() 方法。
在测试方法运行后的 tearDown() 方法。
测试套件
测试套件意味捆绑几个测试案例并且同时运行。在 JUnit 中,@RunWith 和 @Suite 都被用作运行测试套件。
测试运行器
测试运行器 用于执行测试案例。
测试分类
测试分类是在编写和测试 JUnit 的重要分类。
- 包含一套断言方法的测试断言
- 包含规定运行多重测试工具的测试用例
- 包含收集执行测试用例结果的方法的测试结果