单元测试实战 - Junit测试
一、对加法函数进行测试
1.实例化被测单元(方法):类名 实例名=new 类名([参数])
2.调用被测单元,对比预期值和输出值(实际值);
在没有junit测试工具的情况下,我们要进行如下的测试代码编写过程:
二、利用Junit进行单元测试
Junit是一款专门用于java语言的代码的单元测试工具;是一套基于java的测试框架,目前有两个版本:Junit3,Junit4.Junit中最常用的两个测试方法是:
assertEquals(expect,actual);用于非数组型的数据的比较;
assertArrayEquals(expect,actual);用于数组型的数据的比较;
PS:这两个函数的选择是由被测单元的输出数据类型决定的。
1.Junit 3特征
a.测试类都是要继承TestCase类:
import junit.framework.TestCase
public class TestCalc extends TestCase
b.测试类中的方法的作用是由方法名决定的且测试用例的方法必须以小写的test开头;
如:
2.Junit 4
Junit 3有很大优化,没有Junit3那样的约束条件,使用起来很方便,对于Calc测试如下:
3.对于Java中单元测试来说,被测的方法的类型一般是或者可以转化为以下四种类型:
a.被测方法有返回值,且返回值是可预期的。(按照功能,特定的输入一定对应特定的输出);assertEquals(预期值,输入值);
//上述对于加法函数的测试即属于该类;
b.被测方法有返回值,但是返回值不是固定的,是随机的,但是返回值从数学角度来看,返回值必然是有其特征的;
例:
c.被测方法没有返回值,此时都可以将之转化为输出类型(System.out.println());
例:Dog这样的类是没有返回类型的,通常我们可以将之转化为有输出语句的类型;
d.被测方法本身会抛出异常,此时的测试重点已经是对异常信息的检测。
例:
4.Parameter参数化
一般来说,在自动化测试领域,针对同一单元的测试,往往存在多个测试用例,在代码层面来看,多个测试用例的实现,其特征是:逻辑相同,数据不同。此时就需要用到参数化的操作,一定程度上实现代码和数据的分离,junit自身提供了参数化的方式。
例:
通过参数化进行测试:
5.feeder工具
添加feeder插件,新建data文件夹,右击新建文件,命名为isnumber.csv.(以上面isNumber为例)