如何在尽可能接近生产数据库的情况下设置内存数据库模式以进行测试

时间:2014-08-29 12:45:34

标签: java sql database unit-testing

此问题摘自我在此处发布的评论: What's the best strategy for unit-testing database-driven applications?

因此,我为遗留应用程序(具有相当旧的代码库)提供了一个庞大的数据库架构,其中包含许多tablessynonymstriggersdblinks。我们(最后)开始测试应用程序的某些部分。

我们的测试已经在使用mocks,但是为了测试我们正在使用的查询,我们决定使用具有短期测试数据集的内存数据库。

但是,内存数据库的设置需要一个特定的SQL脚本来进行数据库模式设置。该脚本不是我们生产中的真正DDL,因为我们无法直接导入它。

为了更加努力,数据库包含需要在Java中实现的函数和过程(我们使用h2 db,这是声明过程的方法)。

我担心我们的测试不会打破真正的数据库更改的那一天,我们只会在运行时发现问题,可能是在生产中。

我知道我们的测试完全处于集成和单元之间的边界。然而,对于当前的体系结构,很难将测试与db隔离。我们希望对数据库查询进行适当的测试(内部没有ORM。)

让DDL尽可能接近真实DDL并且无需手动维护它会有什么解决方案?

0 个答案:

没有答案