小编Bil*_*ill的帖子

如何实现Oracle PL/SQL的测试隔离测试?

在Java项目中,JUnit测试执行设置,测试和拆卸.即使在使用内存数据库模拟真实数据库时,通常也会回滚事务或从内存中删除数据库并在每次测试之间重新创建数据库.这为您提供了测试隔离,因为一次测试不会在可能影响下一次测试的环境中留下工件.每个测试都以已知状态开始,不能渗透到另一个测试中.

现在我有了一个Oracle数据库构建,可以创建1100个表和400K代码 - 很多pl/sql包.我想不仅测试分贝安装(全 - 从头开始​​,部分制作 - 从以前的数据库升级,等等),并确保所有的表格和其他对象是在安装后,我期望的状态,同时也在pl/sql上运行测试(我不确定我怎么做前者 - 建议?).

我希望这一切都从Jenkins运行CI,以便通过回归测试捕获开发错误.

首先,我必须使用企业版而不是XE,因为XE不支持Java SP并且依赖于Oracle Web Flow.即使我消除了这些依赖关系,构建通常需要1.5小时才能加载(完整版本).

那么如何在这种环境下实现测试隔离呢?为每个测试使用事务并将其回滚?好的,那些提交的pl/sql程序怎么样?

我考虑过备份和恢复以在每次测试后重置数据库,或者在每次测试之间重新创建整个数据库(过于激烈).两者都不切实际,因为安装它需要一个多小时.每次测试都这样做是过度和疯狂.

有没有办法在db模式中绘制一条线,然后将其回滚到那个时间点?Sorta就像一个很大的"撤消"功能.除了expdp/impdp或rman之外的东西.也许整个方法都没有了.建议?别人怎么做到这一点?

对于CI或小型生产升级窗口,该测试套件必须在合理的时间内运行(30分钟是理想的).

是否有产品可能有助于实现这种"撤销"能力?

testing oracle unit-testing plsql isolation

20
推荐指数
2
解决办法
4091
查看次数

标签 统计

isolation ×1

oracle ×1

plsql ×1

testing ×1

unit-testing ×1