DBUnit annotatio - 学习java第一个轮子
终于还是开始学习写Java程序了,学习了一下dbunit的使用,这个东东在做有数据库读写动作的单元测试时确实是很有用的,感觉比用mock好些。
顺便写了一个辅助的小东东——一个annotation (org.dbunit.annotation.SetupDB.java)以及一个BaseTaskCase(MyDBTastCase.java),也算发明了个轮子啊,呵呵。
这样在使用 dbunit时就比较方便了,只需要在 TestMethod 前使用 annotation SetupDB("数据文件名"),就会自动为该测试用例加载指定的数据文件。
*
* 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 参数,这样会清空数据库中的相关表,保证测试时运行在一个空的数据库表上(例如针对插入数据相关的测试)
输入数据一样方便(手册说可以支持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类似版一直没有找到,那位如果知道,麻烦顺便告诉我一声。
顺便写了一个辅助的小东东——一个annotation (org.dbunit.annotation.
这样在使用 dbunit时就比较方便了,只需要在 TestMethod 前使用 annotation SetupDB("数据文件名"),
== 使用说明 ==
*
* Example:
* 指定 XML 格式的数据源文件
* SetupDB("sample-data.xml")
* 指定 CSV 格式的数据文件,注意 sample-data.csv 必须是一个目录名
* SetupDB("sample-data.csv")
* 指定 Excel 格式的数据源文件
* SetupDB("sample-data.xls")
* 可以同时制定数据初始化以及善后动作
* SetupDB(value="sample-data.
* 也可以指定多个数据文件,这些文件的内容将被合并
* 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","
public void testDeployTask() {
... ...
}
好像 JUnit 3 和 JUnit4 都可以用,不过我都引入了 JUnit3的库。
相关的源代码在 https://files.cnblogs.com/shwen99/dbunit-annotation.7z
主要的两种应用方式:
1、只指定 数据文件,这样在测试用例前,dbunit会清空数据库,
2、指定 setup=SetupDB.TRUNCATE_TABLE 参数,这样会清空数据库中的相关表,
== 数据文件的生成 ==
输入数据一样方便(手册说可以支持excel文件作为数据文件,
我是用 dbunit-maven plug-in 生成的数据文件 dtd,然后用 xmlspy 转换为 xsd,这样在编写 xml数据
文件的时候,使用编辑工具可以自动填入字段名称等内容,
惭愧,我不知道怎么配置 dbunit-maven plug-in,所以我用的是appfuse 自动生成配置,
示例:
在工程目录下,输入(必须是 maven 2.0.9 以上版本)
mvn archetype:create -DarchetypeGroupId=org.
就会创建一个子目录 honeybee,(honeybee)是mysql数据库 的库名,这样做什么配置都可以不改。
在honeybee 目录下会生成一个 pom 文件,进入 honeybee 目录,输入
mvn dbunit:export -Dformat=dtd
就可以在 honeybee"target"dbunit"export.
希望这个东东对大家有用。
BTW:DBUnit的DotNet类似版一直没有找到,