软件测试技术JUnit和单元测试入门简介
作者:网络转载 发布时间:[ 2012/11/19 9:53:33 ] 推荐标签:
3.6、JUnit一个实例
在控制台中简单的范例如下:
1、写个待测试的Triangle类,创建一个TestCase的子类ExampleTest:
2、ExampleTest中写一个或多个测试方法,断言期望的结果(注意:以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试)
3、ExampleTest中写一个suite()方法,它会使用反射动态的创建一个包含所有的testXxxx方法的测试套件:
Junit本身的操作并没有什么特别的地方。这里提供了6种测试项目,分别针对不同的测试对象或者可以说是目标。
test case:这个是常用的,也是对程序代码中类的测试。
test suite:这个更高一级,可以一次行测试多个类。其效果与分别 进行多个testcase是相同的。
jdbc fixture:这个是针对数据库链接的测试。(很少用,不大懂。)我学的是默认的jdbc的数据库。
jndi fixture:这个相当于是一个容器测试。如果说主要的内容是测试那些存放链接的fixture。
在编程的时候,经常把一些常用的链接放在一个类似于容器的东东里面,这样,如果调用重复调用链接的话,可以同一调用容器地址,再具体指向里面的链接。这是否是一种管理呢。
comparision fixture:这个也是比较少用的东东。
custom fixture:这个是自定义设置。只是生成一个框架。
junitx.framework包主要功能
该包以类方法的方式扩展junit.framework.Assert的功能。
也是这时候,可以不用继承相应的类,可以直接使用断言的相关的功能。事实上基于元数据的测试框架都基本采用这种方式实现断言。
junitx.framework.Assert
junitx.framework.ArrayAssert
junitx.framework.ComparableAssert
junitx.framework.FileAssert
junitx.framework.ListAssert
junitx.framework.ObjectAssert
junitx.framework.NamingAssert
junitx.framework.OrderedTestSuite
junitx.framework.StringAssert
junitx.framework.ThrowableAssert
2. 测试类的私有属性
2.1 测试类的私有属性的实现
使用相关类(junitx.util.PrivateAccessor)的方法类访问私有属性和方法。
参考:
ExampleJUnit_Addons_Exampleexample1目录下
example1.TestAccount类
example1.Account类
2.2 实现访问类的属性和方法的原理
利用Java的反射机制来实现的。
l .使用java.lang.Class的相关方法,获得相关指定对象的Field,然后调用
field.setAccessible(true);绕过访问权限的检查,然后可以访问Field的值,当然
也可以设置Field的值。
2.使用java.lang.Class的相关方法,获得相关指定对象的Method;然后调用
field.setAccessible(true);绕过访问权限的检查;后执行该方法.
3. junitx.extensions包主要功能
这个包实际上在使用模板方法模式创建测试用例工具类。
使用了模板方法模式,定义抽象类,把相关的测试方法给出具体实现,把被测试对象的创建放到基本方法中。
JUnit-addons框架自己的例子有:
junitx.extensions.ComparabilityTestCase
junitx.extensions.EqualsHashCodeTestCase
junitx.extensions.SerializabilityTestCase
这几个类都定义了几个抽象方法,这些方法主要是用于创建对象的方法,需要在具体类里面实现这些方法。在TestSuite里面,增加测试用例是通过,使用类的无参数构造器来实现的,因此上面的这些类,为了实现测试对象的注入,采用了set注入的方式,而不是构造器注入方式。
参考例子:ExampleJUnit_Addons_Exampleexample1srcextensions目录下extensions.WdzEqualsHashCodeTestCase类
其实,根据IOC的原理,可以把上面几个类的类结构修改下,可以考虑采用构造注入的方式,更好些,不用去定义一些具体类。不过,如果采用构造注入这种方式,需要定义自己的的TestRunner了。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11