我正在尝试设置SpecFlow进行集成/验收测试.我们的产品在Sqlite中有一个支持数据库(虽然不是很大).
事实证明这实际上是一个有点棘手的问题; 如何为测试建模数据库?
我想知道其他人使用什么模式进行与后备数据库的集成/验收测试.
我可以想到以下方法:
- 使用测试将数据库编译到程序集中,然后为每个测试进行阴影复制.虽然似乎很慢.
- 我可以在内存中创建数据库并使用预先确定的数据填充它.
- 我可以在内存中创建数据库,并以某种方式让Givens填充数据库.这似乎会使测试变得非常糟糕,但可能会给他们更多的控制并使测试不那么脆弱.
- 我可以抽象每个数据库交互并使用模拟.不喜欢这个想法,因为我也想用它来测试数据库交互.
- 将数据库编译到测试中并依赖清理代码将其返回到基本状态(这对我来说似乎很狡猾).不希望对事务执行此操作,因为将与某些测试进行多次交互(因此编写项目然后尝试使用不同的权限读取它).