我有一些使用Informix 11.5数据库的代码,我想对它进行一些测试。
如果测试失败,他们通常会使数据库处于不一致的状态,需要手动解决才能再次运行测试。
我想自动执行此操作,以便在再次运行测试之前不需要手动干预。
我目前的解决方案是编写一些执行清理的代码,但这意味着只要新功能中出现潜在的新不一致状态,就必须维护代码。
代码运行了很多存储过程,这些存储过程本身经常使用事务。由于Informix不支持嵌套事务,因此我不能将所有工作都包含在一个大事务中。
是否有另一种创建检查点的方法,我可以将数据库还原回?
答案 0 :(得分:1)
如果这只是一个开发服务器,那么在测试之前如何使用Level 0 ontape系统存档?我认为这也可以通过sysadmin函数完成(不确定),因此可以实现自动化。测试完成后,您只需恢复存档。
答案 1 :(得分:1)
更改数据库状态 - 并将其重置回已知状态 - 是单元测试社区花费时间和精力避免对数据库进行测试的原因之一。这是一个棘手的问题。
Informix 11.50确实支持保存点;但是,如果没有介入的COMMIT或ROLLBACK,它不会支持一个BEGIN WORK。
尽可能让测试创建并加载一组包含已知数据的表。实现这一目标的一种方法是为测试创建一个全新的数据库。但是,如果您需要使用大量数据进行测试,这只是临界可行的。
我认为这个问题在任何方面都不是Informix独有的 - 这是测试DBMS操作的一般问题。
答案 2 :(得分:1)
您可以使用撤消磁盘创建虚拟机,并在运行测试后关闭虚拟机而不保存更改。这相当于你从未进行过测试!