database - Spring JPA : Testing DAO layer with multiple databases in a CI environment

标签 database spring testing dao

我们正在进行一个数据库需求不明确的项目。因此,我们正在构建一个与数据库无关的应用程序。

在这里查看我之前的问题:Database Agnostic Application

现在我想用多个数据库测试我的 Spring 应用程序 DAO。我已经使用 TestNG 和 DBUnit 编写了许多测试用例。

当我在 CI 环境中运行这些测试时,我希望它们针对所有已配置的数据库测试应用程序。我已经在“测试服务器”上安装了数据库。

例如我想要这样的东西:

for ( each database configured ) {
 run each dao test
}

不确定这样做的最佳方法是什么?欢迎提供帮助。

谢谢, 阿迪

最佳答案

  1. 如果您想独立于数据库,则必须针对您想要支持的每个数据库系统进行测试。通过 Hibernate 泄漏了非常细微的差异。

  2. 我过去所做的是让测试通过一些系统属性检索他们的数据库配置。通常使用 hibernate_.property 而不是默认的 hibernate.property。然后设置 CI 作业,它将属性设置为不同的值,并为每个数据库提供一个 hibernate_xxx.property 以进行测试。我使用 JUnit Rules 做到了这一点,将逻辑放在一个地方。不知道适合 TestNG 的工具

  3. 我不喜欢你暗示的循环结构,因为它可能会导致难以针对单个特定数据库运行测试套件。

  4. 我也不喜欢 dbunit,因为它似乎让维护测试数据变得相当痛苦。在大多数情况下,我更喜欢手工制作的 DSL。看看我写的一些关于它的文章:

http://blog.schauderhaft.de/2011/03/13/testing-databases-with-junit-and-hibernate-part-1-one-to-rule-them/

http://blog.schauderhaft.de/2011/03/20/testing-databases-with-junit-and-hibernate-part-2-the-mother-of-all-things/

http://blog.schauderhaft.de/2011/03/27/testing-databases-with-junit-and-hibernate-part-3-cleaning-up-and-further-ideas/

关于database - Spring JPA : Testing DAO layer with multiple databases in a CI environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9377701/

相关文章:

java - @ConfigurationProperties vs @PropertySource vs @Value

testing - 运行 munit 测试任务后 bamboo 作业失败

mysql - 创建 MySQL 触发器的 SQL 语法错误

使用 jobLauncherTestUtils 进行 Spring 批量集成测试

sql - 更改数据库列的顺序

spring - mvn : command not found - terminal

c# - 使用 BackGroundWorker 运行 WatiN 打开 IE 浏览器

python - 如何运行 python 测试套件?

mysql - MYSQL 中 >= 和 < 的简写

sql-server - GUID 是否应该用作许多表的外键