三颗纽扣

世界上最宽广的是海洋,比海洋更宽广的是天空,比天空更宽广的是人的胸怀

导航

DBUnit annotatio - 学习java第一个轮子

终于还是开始学习写Java程序了,学习了一下dbunit的使用,这个东东在做有数据库读写动作的单元测试时确实是很有用的,感觉比用mock好些。

顺便写了一个辅助的小东东——一个annotation (org.dbunit.annotation.SetupDB.java)以及一个BaseTaskCase(MyDBTastCase.java),也算发明了个轮子啊,呵呵。
这样在使用 dbunit时就比较方便了,只需要在 TestMethod 前使用 annotation SetupDB("数据文件名"),就会自动为该测试用例加载指定的数据文件。


== 使用说明  ==

 * 使用在 DBUnit 单元测试的方法上,用来表明方法所需要的数据库初始化动作。
 *
 * Example:
 * 指定 XML 格式的数据源文件
 *     SetupDB("sample-data.xml")
 * 指定 CSV 格式的数据文件,注意 sample-data.csv 必须是一个目录名
 *     SetupDB("sample-data.csv")
 * 指定 Excel 格式的数据源文件
 *     SetupDB("sample-data.xls")
 * 可以同时制定数据初始化以及善后动作
 *     SetupDB(value="sample-data.xml", setup=SetupDB.TRUNCATE_TABLE, teardown=SetupDB.TRUNCATE_TABLE)
 * 也可以指定多个数据文件,这些文件的内容将被合并
 *     SetupDB({"sample-data1.xml", "sample-data2.xml"})

例如:
测试类要从 MyDBTestCase 派生,并有一个 string name 的构造方法(不知道有什么用 ……)

public class TaskEngineTest extends MyDBTastCase{
public TaskEngineTest(String name) {
       super(name);
}

@SetupDB({"demo_type.xml","demo_apu.xml","demo_adapter.xml"})
public void testDeployTask() {
   ... ...
}

好像 JUnit 3 和 JUnit4 都可以用,不过我都引入了 JUnit3的库。

相关的源代码在 https://files.cnblogs.com/shwen99/dbunit-annotation.7z

主要的两种应用方式:
1、只指定 数据文件,这样在测试用例前,dbunit会清空数据库,并将数据文件中的数据加载到数据库,保证数据库的数据在一个已知的状态
2、指定 setup=SetupDB.TRUNCATE_TABLE 参数,这样会清空数据库中的相关表,保证测试时运行在一个空的数据库表上(例如针对插入数据相关的测试)

== 数据文件的生成 ==
 

数据文件的格式我比较喜欢用 flat xml 格式,这个格式比较简单,而且用 xmlspy 编辑的话,可以显示为 表格,和用 excel
输入数据一样方便(手册说可以支持excel文件作为数据文件,未有时间实验过)

我是用 dbunit-maven plug-in 生成的数据文件 dtd,然后用 xmlspy 转换为 xsd,这样在编写 xml数据
文件的时候,使用编辑工具可以自动填入字段名称等内容,填写起来比较方便。
惭愧,我不知道怎么配置 dbunit-maven plug-in,所以我用的是appfuse 自动生成配置,

示例:
在工程目录下,输入(必须是 maven 2.0.9 以上版本)
mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-core -DremoteRepositories=http://static.appfuse.org/releases-DarchetypeVersion=2.0.2 -DgroupId=com.ultrapower.honeybee -DartifactId=honeybee

就会创建一个子目录 honeybee,(honeybee)是mysql数据库 的库名,这样做什么配置都可以不改。
在honeybee 目录下会生成一个 pom 文件,进入 honeybee 目录,输入
mvn dbunit:export -Dformat=dtd
就可以在 honeybee"target"dbunit"export.xml 得到dtd 文件。

希望这个东东对大家有用。

BTW:DBUnit的DotNet类似版一直没有找到,那位如果知道,麻烦顺便告诉我一声。

posted on 2008-07-30 20:46  三颗纽扣  阅读(1340)  评论(0编辑  收藏  举报