我们正在进行一个数据库需求不明确的项目。因此,我们正在构建一个与数据库无关的应用程序。
在这里查看我之前的问题:Database Agnostic Application
现在我想用多个数据库测试我的 Spring 应用程序 DAO。我已经使用 TestNG 和 DBUnit 编写了许多测试用例。
当我在 CI 环境中运行这些测试时,我希望它们针对所有已配置的数据库测试应用程序。我已经在“测试服务器”上安装了数据库。
例如我想要这样的东西:
for ( each database configured ) {
run each dao test
}
不确定这样做的最佳方法是什么?欢迎提供帮助。
谢谢, 阿迪
最佳答案
如果您想独立于数据库,则必须针对您想要支持的每个数据库系统进行测试。通过 Hibernate 泄漏了非常细微的差异。
我过去所做的是让测试通过一些系统属性检索他们的数据库配置。通常使用 hibernate_.property 而不是默认的 hibernate.property。然后设置 CI 作业,它将属性设置为不同的值,并为每个数据库提供一个 hibernate_xxx.property 以进行测试。我使用 JUnit Rules 做到了这一点,将逻辑放在一个地方。不知道适合 TestNG 的工具
我不喜欢你暗示的循环结构,因为它可能会导致难以针对单个特定数据库运行测试套件。
我也不喜欢 dbunit,因为它似乎让维护测试数据变得相当痛苦。在大多数情况下,我更喜欢手工制作的 DSL。看看我写的一些关于它的文章:
关于database - Spring JPA : Testing DAO layer with multiple databases in a CI environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377701/