Ume*_*cha 2 java database junit unit-testing jdbc
我有与多个数据库(如 Sybase、Postgress、DB2 等)对话的代码。所以我有不同的模块,对这些数据库中的每一个都有不同的查询。我从 H2 和 JUnit 开始进行单元测试。由于 Sybase、Postgres、DB2 等查询在 H2 中不起作用,我开始将我现有的目标查询转换为 H2 可以接受的格式,我发现许多 SQL 函数,如 RANK()、分区、复杂连接更新、case when 等在 H2 中不受支持或无法按预期工作。我如何对这段代码进行单元测试?
我应该使用相应的数据库对每个 db 模块进行单元测试吗?例如,Sybase 模块是否具有与 Sybase 而不是 H2 对话的单元测试,或者如果我对我的数据库代码进行单元测试,我是否必须使用 H2?
是的,您应该针对为其编写的数据库的真实实例测试每个特定于数据库的查询模块。根据某些定义,这是集成测试而不是单元测试,但那又怎样——你需要测试,不管它们叫什么。
将其余代码的单元测试编写为真正的单元测试,剔除数据库模块,因此这些测试不需要任何正在运行的数据库,也不会依赖于您支持的任何一个数据库的怪癖。
设置大部分验收或集成测试,以针对您实际支持的最喜欢的数据库运行,每个开发人员在他们的机器上都有。您将了解有关该数据库的知识,如果您仅将特殊数据库用于测试,则不会学到这些知识。至少有一个集成测试(应用程序中的一些基本用例)来练习每个数据库模块。
组织您的单元和集成测试,以便您可以运行所有测试,除了需要特定数据库模块的测试(但包括针对您最喜欢的模块运行的测试)。设置一个持续集成系统来运行所有测试,以便不会遗漏较少使用的数据库模块中的错误。
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |