JDBC/数据库单元测试的最佳实践[关闭]

2024-04-15

我有与多个数据库(如 Sybase、Postgress、DB2 等)通信的代码。因此,我有不同的模块,对每个数据库都有不同的查询。我开始使用 H2 和 JUnit 进行单元测试。由于 Sybase、Postgres、DB2 等查询在 H2 中不起作用,我开始将现有的目标查询转换为 H2 可以接受的格式,我发现许多 SQL 函数,如 RANK()、分区、复杂连接更新、case while 等在 H2 中不受支持或无法按预期工作。我该如何对这段代码进行单元测试?

我应该使用相应的数据库对每个数据库模块进行单元测试吗? 例如,Sybase 模块是否具有与 Sybase 而不是 H2 对话的单元测试,或者如果我对数据库代码进行单元测试,我是否必须使用 H2?


是的,您应该针对为其编写的数据库的真实实例来测试每个特定于数据库的查询模块。根据某些定义,这是集成测试,而不是单元测试,但那又如何——无论它们被称为什么,您都需要测试。

将其余代码的单元测试编写为真正的单元测试,删除数据库模块,因此这些测试不需要任何正在运行的数据库,并且不会依赖于您支持的任何一种数据库的怪癖。

设置大部分验收或集成测试,以针对您实际支持的您最喜欢的数据库运行,每个开发人员的计算机上都有一个数据库。您将学到有关该数据库的知识,如果您仅使用特殊数据库进行测试,则不会学到这些知识。至少有一个集成测试(应用程序中的一些基本用例)来测试每个数据库模块。

组织您的单元和集成测试,以便您可以运行除需要特定数据库模块的测试之外的所有测试(但包括针对您最喜欢的测试运行的测试)。设置一个持续集成系统来运行所有测试,这样就不会错过较少使用的数据库模块中的错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JDBC/数据库单元测试的最佳实践[关闭] 的相关文章

随机推荐