背景
我需要在C#(大约120个)中为C#/ SQL Server应用程序编写一些集成测试。现在,最初在任何测试之前,数据库已经存在,其原因在于,因为将运行大量脚本来设置它(大约20分钟的运行时间)。现在,当我运行测试时,将更新几个表(CRUD操作)。对于例如在10-11个表中,将添加几行,并在15-16个表中说,几行将被更新,在4-5个表中将删除几行。
问题
运行每个测试 After
,the database
需要reset
到原始状态。我怎样才能做到这一点?
不良解决方案
每次运行测试后,re-run
数据库creation scripts
(运行时间为20分钟)。由于将进行大约120次测试,这将达到40小时,这是不可取的。其次,有一个进程对该数据库打开了几个连接,因此无法删除/重新创建数据库。
良好的解决方案?
我想知道是否还有其他方法可以解决这个问题?我遇到的另一个问题是,对于每个测试,我甚至不知道哪些表将被更新,我将不得不手动去检查看看哪些表是否更新如果我要删除,将数据库还原为通过编写查询手动创建原始状态。
答案 0 :(得分:3)
您应该看看MSSQl为您提供数据库快照的可能性。它可能比恢复备份或重新创建数据库快得多。
在测试环境中,当在每轮测试开始时重复运行数据库的测试协议以包含相同的数据时,它可能很有用。在运行第一轮之前,应用程序开发人员或测试人员可以在测试数据库上创建数据库快照。每次测试运行后,通过还原数据库快照,数据库可以快速返回到先前状态。