首页 > 知识点讲解
       如何编写单元测试
知识路径: > 测试技术的分类 > Web应用测试 > Web应用开发测试 > 使用Junit进行单元测试 > 
相关知识点:4个      
        通常强调单元测试必须由类包的编写者负责编写,这个限定对于我们设定的测试目标是必须的。因为只有这样,测试才能保证对象的运行行为符合需求,而通过类接口的测试,我们只能确保对象符合静态约束,因此这就要求我们在测试的过程中,必须开放一定的内部数据结构,或者针对特定的运行行为建立适当的数据记录,并把这些数据暴露给特定的测试单元。这也就是说我们在编写单元测试时必须对相应的类包进行修改,这样的修改也发生在我们以前使用的测试方法中,因此,以前的测试标记及其他一些测试技巧仍然可以在Junit测试中改进使用。
        由于单元测试的总体目标是保证软件在运行过程中的正确无误,因此在我们对一个对象编写单元测试的时候,我们不但需要保证类的静态约束符合我们的设计意图,而且需要保证对象在特定条件下的运行状态符合我们的预先设定。下面还是拿数据库缓冲池的例子进行说明。一个缓冲池暴露给其他对象的是一组使用接口,其中包括对池的参数设定、池的初始化、池的销毁、从这个池里获得一个数据连接,以及释放连接到池中,对其他对象而言,随着各种条件的触发而引起池的内部状态的变化是不需要知道的,这一点也是符合封装原理的。但是池对象的状态变化,例如缓存的连接数在某些条件下会增长,一个连接在足够长的运行后需要被彻底释放,从而使池的连接被更新等,虽然外部对象不需要明确,但是却是程序运行正确的保证,所以我们的单元测试必须保证这些内部逻辑被正确地运行。
        编译语言的测试和调试是很难对运行逻辑过程进行跟踪的,但是我们知道,无论逻辑怎么运行,如果状态的转换符合我们的行为设定,那么结果显然是正确的。因此,在对一个对象进行单元测试的时候,我们需要对多数的状态转换进行分析和对照,从而验证对象的行为。状态是通过一系列的状态数据来描述的,因此编写单元测试,首先分析出状态的变化过程(状态转换图对这个过程的描述非常清晰),然后根据状态的定义确定分析的状态数据,最后是提供这些内部的状态数据的访问。在数据库连接池的例子中,我们对池实现的对象“DefaultConnectionProxy”的状态变换进行分析后,我们决定把表征状态的“OracleConnectionCacheImpl”对象公开给测试类。参见示例1。
        【示例1】
        
        
        为了能够了解对象的状态变化,需要给表征对象内部状态变化的部分私有变量提供公共的访问接口(或者提供让同一个类包访问的接口),以便使测试单元可以有效地判断对象的状态转变,在本示例中对包装的OracleConnectionCacheImpl对象提供访问接口。
        
        在公开内部状态数据后,我们就可以编写我们的测试单元了。单元测试的选择方法和选择尺度已经在前面章节进行了说明。但是仍然需要注意的是,由于assert方法会抛出一个error,你应该在测试方法的最后集中用assert相关方法进行判断,这样可以确保资源得到释放。对数据库连接池的例子,我们可以建立测试类DefaultConnection-ProxyTest,同时建立数个测试案例,如下所示。
        【示例2】
        
        
        
        当单元测试完成后,我们可以用Junit提供的TestSuite对象对测试单元进行组织,你可以决定测试的顺序,然后运行你的测试。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有