【问题标题】:Unitils/DbUnit: How to test in a multi-database environment?Unitils/DbUnit:如何在多数据库环境中进行测试?
【发布时间】:2012-09-06 09:40:57
【问题描述】:
我正在使用 Unitils(与 DbUnit)进行数据访问层单元测试,但需要测试多个数据库。最好的方法是什么?
数据库不同,因此一些 DAO 用于一个数据库,另一个 DAO 用于另一个。
我看到以下替代方案:
- 将每个 *DaoTest 与单独的 unitils.properties 文件相关联,该文件将保存此 DAO 数据库的配置。有可能吗?
- 为每个数据库都有一个单独的测试项目(保存该数据库的 *DaoTests 和一个带有数据库凭据的 unitils.properties 文件)
还有其他想法吗?
【问题讨论】:
标签:
dbunit
multiple-databases
unitils
【解决方案1】:
希望您在最初询问后的 6 年内找到了答案:)
我最近发现自己遇到了同样的问题并以这种方式解决了它:
我为每个 DAO 使用了一个 unittils.properties,它定义了我的项目需要测试的每个数据源。在unittils.properties 文件中,我定义了一个database.schemaNames=DATABASE_1, DATABASE_2 属性。
然后,您可以将数据集定义修改为如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<dataset xmlns="DATABASE_1" xmlns:b="DATABASE_2">
<some_table />
<b:some_other_table />
<some_table attr_1="foo" attr_2="bar" />
<b:some_other_table other_attr="baz" />
</dataset>
请注意,some_table 将假定居住在 DATABASE_1。这是因为 unittils 将database.schemaNames 属性中的第一个数据库设置为默认值。因此,您可以选择在数据集的 xml 文件中省略 xmlns="DATABASE_1"。