本篇作为Junit的概述,主要了解什么是Junit,Junit的基本特征,Junit是如何工作,以及什么是单元测试,和Junit的历史背景。
1.什么是Junit
JUnit是Java语言的一个单元测试框架,这个就是Junit的核心特点。
在Java开发人员写好了模块代码之后,它们可以不使用Junit来写单元测试用例,例如,可以写多个带main方法的测试类。但是如果使用Junit,极大方便开发人员写单元测试用例的速度,简化了单元测试代码。
2.看一个Junit测试代码
package overview;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class Test01 {
@Test
public void test1() {
assertEquals(5, "hello".length());
}
}
上面代码就是测试“Hello”这个字符串长度是不是5. 如果是,运行这个单元测试就是成功,出现绿色的状态条,如果断言失败,就是红色的状态条。
上面代码把5改成6,再次运行。
这个代码如何运行,如何在Eclipse上创建也给项目来练习Junit,我后面文章详细介绍。
3.JUnit主要功能
1.断言(英文叫Asserts)
2.测试启动和关闭(Test setup and teardown)
3.异常测试
4.测试套件(Test Suites)
5.参数化测试(Parameterized Test)
6.假设(Assumptions)
7.规则(Rules)
8.理论(Theories)
9.和其他流行的构建系统的集成
4.JUnit运行原理
下面这张图解释JUnit是如何工作的
上面的Subject under test一般就是值被测试对象,也就是Java类文件。
5.什么是单元测试
作为测试,我们知道单元测试,模块测试,集成测试,系统测试。最底层就是单元测试,在Java项目中,一个最小的单元就是一个class文件,但是在单元测试中,最小的单元是一行代码。简单来说,在Java中,就是测试一个class文件中的每个方法中的每行代码覆盖到。为了达到这种覆盖,我们有很多覆盖手段,例如,分支覆盖,路径覆盖,异常覆盖等。
6.历史
关于JUnit的历史,不得不提一个人物,Kent Beck,他是SUnit框架的创造者,然后其其他一个共同开发出的JUnit,他同时也是极限编程概念的提出者,目前应该还在facebook公司,想了解这更多这个人物,请看wiki介绍https://en.wikipedia.org/wiki/Kent_Beck
以下是JUnit发展的时间轴