每次测试后在集成环境中回滚数据

时间:2015-04-21 13:23:50

标签: java oracle automated-tests integration-testing rollback

我们有一个使用Java和Oracle数据库的遗留系统。

我现在想要建立一个集成环境,我们可以通过HTTP调用来运行测试。

在整个测试周期开始之前,数据库将重新设置。我们已经有了这方面的功能。

现在,每次测试后,只应回滚此测试的修改数据。这在Oracle数据库中是否可行?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Oracle 11,则可以使用FLASHBACK命令将表还原到某个时间点。用法就像这样

FLASHBACK TABLE employees_test
  TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' minute);

您的用户需要特殊权限

  • SELECT ANY DICTIONARY或FLASHBACK ANY TABLE或SELECT_CATALOG_ROLE

我认为这是针对开发或测试实例的,因为生产中的所有用户都不允许使用这些权限。

答案 1 :(得分:0)

我看到两个选项:

  • Flashback database - 你可以做一些全球性的回滚"您的数据库到预定义的还原点。
  • 使用Datapump:架构准备就绪后,将其导出。每次测试后,请使用CONTENT=DATA_ONLYTABLE_EXISTS_ACTION=TRUNCATE(例如)进行导入。可以相当快,不需要为闪回设置。