在模块化/可插拔数据库支持的应用程序框架中进行测试

时间:2017-09-11 12:14:22

标签: database testing plugins orm frameworks

上下文

目前使用模块化数据库支持的应用程序框架:数据存储是常规Postgres上的薄层,模块/插件可以相互依赖,并在所述数据库上执行相对任意的操作,包括添加列或更改其属性(例如,使依赖关系的列NOT NULL),因此启用模块包含

  1. 应用其DDL(新表,新列,新约束,新索引,对以前任何版本的现有版本的更改,......)
  2. 安装任何"静态"它包含的数据
  3. 可选地运行其测试
  4. 问题

    这会导致测试成为一件苦差事,当前系统必须先安装一个模块然后再运行测试才能进入下一个模块,这需要将系统重置为0重新运行测试(因为模块K可能已经修改了数据库模式,使得模块J的测试不再运行)。它重量级,麻烦,缓慢,并且难以集成到现有的测试工具或元工具中。

    查询

    我一直在考虑减少不便之处,但除了跳过模块之外(当前系统没有“#34;模块测试"只有"模块要安装"”和在尝试测试模块时,它还将运行所有依赖项的测试。我还没有设法提出任何东西。

1 个答案:

答案 0 :(得分:0)

只要您将更改保留在一个架构中,就应该很容易(除非我没有正确理解您的要求)。在每次测试之前,您应该重置数据库。一个简单的想法是再次删除并创建架构。如果您需要将db重置为某个预定义状态,请检查postgres模板。如果您的工具应该允许完全自定义数据库操作(如删除用户或模式),那么您需要某种抽象层来跟踪在所有这些更改(user,passwd,jdbc url)之后如何连接到此数据库。

用于集成测试的大多数现有项目并非旨在测试架构更改,而是测试代码如何与固定架构协作。

我不知道提供你所需要的任何其他项目,所以这将是一个无耻的营销。最近我创建了一个集成测试工具testegration。它是商业产品,但有免费等级。它也被设计用于测试固定的模式,但它应该处理你的情况 - 只需覆盖“重置”和#39;阶段使用drop / create schema或使用postgres模板