此问题摘自我在此处发布的评论: What's the best strategy for unit-testing database-driven applications?
因此,我为遗留应用程序(具有相当旧的代码库)提供了一个庞大的数据库架构,其中包含许多tables
,synonyms
,triggers
和dblinks
。我们(最后)开始测试应用程序的某些部分。
我们的测试已经在使用mocks
,但是为了测试我们正在使用的查询,我们决定使用具有短期测试数据集的内存数据库。
但是,内存数据库的设置需要一个特定的SQL脚本来进行数据库模式设置。该脚本不是我们生产中的真正DDL,因为我们无法直接导入它。
为了更加努力,数据库包含需要在Java
中实现的函数和过程(我们使用h2
db,这是声明过程的方法)。
我担心我们的测试不会打破真正的数据库更改的那一天,我们只会在运行时发现问题,可能是在生产中。
我知道我们的测试完全处于集成和单元之间的边界。然而,对于当前的体系结构,很难将测试与db隔离。我们希望对数据库查询进行适当的测试(内部没有ORM
。)
让DDL尽可能接近真实DDL并且无需手动维护它会有什么解决方案?