一、单元测试的含义
单元测试是对软件基本组成单元进行的测试。而且软件单元是在与程序的其他部分相隔离的情况下进行独立的测试。
二、单元测试的目的
尽可能早地发现软件中存在的错误,从而降低软件质量成本。
三、Junit的概念
Junit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:1、用于测试期望结果的断言(Assertion)2、用于共享共同测试数据的测试工具3、用于方便的组织和运行测试的测试套件4、图形和文本的测试运行器。
四、JUnit框架中的对象类
JUnit有4个重要的类,分别是TestSuite、TestCase、TestResult和TestRunner,另外还包括Test和TestListener接口和Assert类。
1.Assert类用来验证条件是否成立,当条件成立时,assert方法保持沉默,若条件不成立时就抛出异常。
2.Test接口用来测试和收集测试的结果,Test接口采用了 Composite设计模式,它是单独的测试用例,聚合的测试模式以及测试扩展的共同接口。
3.TestCase抽象类用来定义测试中的固定方法, Testcase是Test接口的抽象实现,由于 TestCase是一个抽象类,因此不能被实例化,只能被继承。其构造函数可以根据输入的测试名称来创建一个测试用例,提供测试名的目的在于方便测试失败时查找失败的测试用例。
4. Test Suite是由几个TestCase或其他的Test Suite构成的。可以很容易构成一个树形测试,每个测试都由持有另外一些测试的Test Suite来构成。被加入到 Test Suite中的测测试在一个线程上依次被执行。
5. Test Result负责收集TestCase所执行的结果,它将结果分类,分为客户可预测错误和没有预测的错误,它还将测试结果转发到 TestListener处理。(
6.TestRunner是客户对象调用的起点,它负责对整个测试过程进行跟踪。它能够显示测试结果,并且报告测试的进度。
7. TestListener包含4个方法: addError(), addFailuer(), startTest()和 endTest()它是对测试结果的处理和对测试驱动过程的工作特征进行提取。
五、Junit测试技术存在的缺陷
1.testng底层调用junit
2.历史上曾有testng优于junit的一段时期,但随后junit已更新并追赶上来
3.testng的data provider使用较方便
4.testng能做的事情junit都能做,但是有的地方会比较麻烦,例如,数据驱动,多线程并发执行测试用例。testng更便捷,自带。junit则要依靠第三方工具提供。
5.junit能做的事情testng也都能做,但junit也有更便捷的时候。比如soft assertion,junit可以直接继承jassert做,testng你要自己去实现静态类来做。
6.junit是testng的底层,灵活度上更高。testng调用junit,对测试员来说用户体验更好。
六、总结
JUnit是一个非常实用的Java测试框架,用于编写和运行可重复的测试。JUnit是公开源代码的,可以进行二次开发;可以方便地对JUnit进行扩展。JUnit的最大作用就是可以方便的进行单个方法的测试。可与其他框架整合方便了JUnit的使用。