2017-09-11 54 views
1

语境

目前与模块化数据库支持的应用程序框架的工作:数据存储是通过常规的Postgres的薄层,和模块/插件可依赖于一个另一个并执行相对任意的操作在所述数据库包括添加列或改变其性质(例如使一个依赖的列NOT NULL),所以能够使模块由测试以模块化/可插拔数据库支持的应用程序框架

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

问题

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

查询

我已经从跳过模块寻找到使这个少不方便,但除了(当前系统有没有“模块测试”,只有“模块安装”的概念,并在试图测试一个模块,它也将运行测试它的所有依赖)我没有设法想出任何东西。

回答

0

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

集成测试的大多数现有项目都不是用来测试模式更改,而是测试代码如何与固定模式进行合作。

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

相关问题