首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

施用anntest进行基于数据库的单元测试

2012-10-08 
使用anntest进行基于数据库的单元测试背景:?数据库相关的单元测试一直是单元测试中最令人头疼的问题,虽然d

使用anntest进行基于数据库的单元测试
背景:

?

数据库相关的单元测试一直是单元测试中最令人头疼的问题,虽然dbunit在这一领域已经比较强大,但是依然有很多的缺陷。

?

1、数据的准备繁琐

?

无论是xml、xls、cvs还是sql,准备数据起来都不尽如人意

?

2、数据文件的维护量大

?

当数据库结构发生变化时,所有的数据文件都需要修改,如果没有修改,相关的测试就报错,当单元测试的错误越来越多时,开发人员就基本没有兴趣去维护这些测试了

?

3、在单元测试的代码中需要去写数据准备的代码

?

我很讨厌写这些代码,我只想测试我写的类而已

?

?

anntest 或许可以帮助你

?

?

anntest特点:

?

1、注释式配置数据(代码侵入性小)

?

2、数据配置集中化(数据库结构改了可以只改这里)

?

3、列准备数据(1000条数据只用一条注释)

?

4、可以对每个测试个性化自己需要的数据

?

5、多数据源支持,可以给几个不同的数据库同时准备

?

6、基于Spring-test ,Spring-test的东西都可以用

?

7、多种类型数据库支持

?

8、多样化的字段数据类型配置

?

?

anntest使用:

?

1、引入jar

?

Spring2.5:

?

?

对应生成的数据为:

?

施用anntest进行基于数据库的单元测试

?

关于valueType的说明:

?

NULL:nullBLANK:空字符VARCHAR:字符串类型NUMBER:数字类型SYSDATE:?当前日期(只有年月日)

可以使用 value="yyyy-MM-dd" 指定固定日期

SYSTIME:?当前时间

可以使用 ?value="yyyy-MM-dd HH:mm:ss" 指定固定时间

?

?

关于increase的说明:

?

适用于VARCHAR?、NUMBER、SYSDATE、SYSTIME类型

?

?

生成的数据为第一条:nickname=测试用户1,第二条:nickname=测试用户2,...

?

?

?

生成的数据为第一条:memberid=99999901,第二条:memberid=99999902,...

?

?

?

生成的数据为第一条:thedate=2012-01-01,第二条:thedate=2012-01-02,...

?

SYSTIME也按日期递增

?

3、准备测试的基础类

?

注:不需要定义所有的列,只需要定义个性化的列,其他的列会取配置里的默认数据

定义了自定义列之后,number属性将无效,数据行数为自定义数据的行数

?

?

?

anntest会在当前目录查找这个文件

?

?

2、如果是公用的数据,可以在测试的根目录下新建anntest-data目录,将csv文件放在这里,在测试中按照如下方式指定:

?

?

@Test@Cleans({@Clean(tbName="z_member),@Clean(tbName="rpt_z_cpmprice",dataSource="dataSourceSds")})

?

?

热点排行