日期:2014-05-16 浏览次数:20574 次
?
数据库相关的单元测试一直是单元测试中最令人头疼的问题,虽然dbunit在这一领域已经比较强大,但是依然有很多的缺陷。
?
1、数据的准备繁琐
?
无论是xml、xls、cvs还是sql,准备数据起来都不尽如人意
?
2、数据文件的维护量大
?
当数据库结构发生变化时,所有的数据文件都需要修改,如果没有修改,相关的测试就报错,当单元测试的错误越来越多时,开发人员就基本没有兴趣去维护这些测试了
?
3、在单元测试的代码中需要去写数据准备的代码
?
我很讨厌写这些代码,我只想测试我写的类而已
?
?
anntest 或许可以帮助你
?
?
anntest特点:
?
1、注释式配置数据(代码侵入性小)
?
2、数据配置集中化(数据库结构改了可以只改这里)
?
3、列准备数据(1000条数据只用一条注释)
?
4、可以对每个测试个性化自己需要的数据
?
5、多数据源支持,可以给几个不同的数据库同时准备
?
6、基于Spring-test ,Spring-test的东西都可以用
?
7、多种类型数据库支持
?
8、多样化的字段数据类型配置
?
?
?
?
Spring2.5:
<dependency> <groupId>com.taobao.anntest</groupId> <artifactId>anntest-spring2</artifactId> <version>1.2.0-SNAPSHOT</version> </dependency>?
Spring3.0:
<dependency> <groupId>com.taobao.anntest</groupId> <artifactId>anntest-spring3</artifactId> <version>1.2.0-SNAPSHOT</version> </dependency>
?
在test的resources根目录下准备目录,目录名:anntest-config
? 里面的文件名为:表名.xml
?
例如:
?
?
<?xml version="1.0" encoding="UTF-8"?> <table id="z_member"> <column name="memberid" valueType="NUMBER" value="99999901" increase="true"/> <column name="nickname" valueType="VARCHAR" value="测试用户" increase="true"/> <column name="status" valueType="NUMBER" value="1"/> <column name="createtime" valueType="SYSTIME"/> <column name="updatetime" valueType="SYSTIME"/> </table>?
?
对应生成的数据为:
?
?
关于valueType的说明:
?
可以使用 value="yyyy-MM-dd" 指定固定日期
可以使用 ?value="yyyy-MM-dd HH:mm:ss" 指定固定时间
?
?
关于increase的说明:
?
适用于VARCHAR?、NUMBER、SYSDATE、SYSTIME类型
?
?
<column name="nickname" valueType="VARCHAR" value="测试用户" increase="true"/>
生成的数据为第一条: