
单元测试
CrazyCoder2010
这个作者很懒,什么都没留下…
展开
-
一个通用的单元测试框架的思考和设计09-实现篇-视图操作
01)概述基于DBunit做基于数据库的单元测试,数据库表的准备数据由框架负责插入和自动清理,目前数据库中很多业务操作是基于视图的(包括普通视图和物理视图),hop测试框架本身并不支持对视图的直接插入和更新操作,因此对视图做测试准备数据的时候,必须造出与视图相关联的各个表的数据,再进行测试02)普通视图一般性的视图,对这种视图做准备数据只有找到该视图的关联表,利用框架提供的工具类Dbu原创 2012-04-24 09:17:13 · 1662 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计08-实现篇-在testcase代码中执行sql语句
一个通用的单元测试框架的思考和设计01-思考篇一个通用的单元测试框架的思考和设计02-设计篇一个通用的单元测试框架的思考和设计03-实现篇-核心类源码一个通用的单元测试框架的思考和设计04-实现篇-自动管理测试数据一个通用的单元测试框架的思考和设计05-实现篇-Guice框架启动与自动注入一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束原创 2012-02-17 13:16:44 · 1837 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计07-实现篇-自动管理测试数据-如何为自增长主键id赋值
项目中使用SQL Server2008做为数据库,表的主键大都设置为identity自增长类型,用dbunit准备数据时却遇到了问题,准备的测试数据插入不到数据中,因为id的类型为自增长,不允许为其手动赋值,如何解决?查看了dbunit的文档,对于MS SQL的自增长主键,提供了一个InsertIdentityOperation类,用这个类就可以解决手动输入主键id的问题具体实现:在set原创 2011-08-15 15:44:40 · 1430 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计06-实现篇-自动管理测试数据-如何临时关闭数据外键约束
第4节中提出了通过dbunit插件来自动管理测试数据,但是在实际操作时发现了一些问题,在设计数据库表时各个表之间可能存在外键关联,在我们准备测试数据库时经常会遇到因外测试数据外键问题导致无法插入数据或者是在清理测试数据的时候因为测试数据的顺序问题导致测试数据无法删除成功,如何解决这个问题?这里使用了一种比较傻瓜但是也比较直接的方式--临时将数据库的外键约束删除,测试完成后将数据恢复到先前状态。原创 2011-08-15 15:34:36 · 1526 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计05-实现篇-Guice框架启动与自动注入
这篇文章将继续上一篇的问题,实现我们的iunit框架与Guice框架的整合,这个模块主要用于那些用Guice来做DI容器的项目做测试用的,包括guice框架的启动与在测试类中自动注入@Inject标注的字段1.目标测试类的庐山真面目package com.crazycoder2010.guice.sample;import org.junit.Test;import com.c原创 2011-07-31 11:51:36 · 1786 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计04-实现篇-自动管理测试数据
上篇文章罗列了整个框架的核心接口,这篇文章将提供IunitExecutionListener的一个实现类-DatasetProviderListener,主要用来将测试数据插入到数据库中,待测试完成后自动删除数据1.dbunit为核心的db测试 dbunit是个很好的数据库测试框架,提供了多种准备数据的操作策略来简化测试数据的插入或更新操作,参考http://www.dbunit.or原创 2011-07-30 21:48:13 · 1883 阅读 · 3 评论 -
一个通用的单元测试框架的思考和设计03-实现篇-核心类源码
第二节里我们介绍了iunit整体的设计思路以及核心类之间的关系,这篇将以源码+解释的方式来演示核心类的实现方式1.IUnitRunner 类这个类是测试的入口类,直接继承自junit4.8的BlockJunit4ClassRunner,在构造函数里,我们把iunit框架的扩展功能添加了进来,因为整个框架呃设计都是基于Listener的,所以只需要把监听器在框架运行的时候加载进来即可--原创 2011-07-30 11:56:26 · 1948 阅读 · 1 评论 -
一个通用的单元测试框架的思考和设计02-设计篇
第一节里介绍了我们框架设计的目标,这篇主要介绍的是这个框架主要的设计思路和关键技术点1.如何扩展junit的功能,使junit在启动时可以做一些我们定制化的功能? junit4建立了以Runner为核心的测试框架运行机制,在junit3的版本中,我们知道要运行一个junit测试用例,必须继承一个TestCase基类,junit4则不需要这个限制,只需要标注一下要运行测试的方法为@Tes原创 2011-07-30 09:28:03 · 1754 阅读 · 0 评论 -
一个通用的单元测试框架的思考和设计01-思考篇
1.先从问题说起 写过程序的同学都知道,做好单元测试提高代码覆盖率对整个项目意味着什么,但是做好单元测试并不是一件那么简单的事情,因为实际业务逻辑和运行环境的复杂性,导致了我们的单元测试代码不可能都像那些helloWord那么简单,比如现在的业务系统绝大多数都是基于数据库的,怎么做单元测试才能做到每次做单元测试时都是一个干净的测试环境-即上次单元测试的数据库操作不会影响本次测试的结果(比如原创 2011-07-29 00:12:57 · 2245 阅读 · 0 评论