【发布时间】:2013-06-07 11:32:51
【问题描述】:
我正在尝试设置 SpecFlow 以进行集成/验收测试。我们的产品在 Sqlite 中有一个后备数据库(虽然不是很大)。
这实际上被证明是一个有点棘手的问题;如何为测试建模数据库?
我想知道其他人使用哪些模式对支持数据库进行集成/验收测试。
我可以想到以下几种方法:
- 将数据库编译到包含测试的程序集中,然后对每个测试进行卷影复制。不过看起来很慢。
- 我可以在内存中创建数据库并使用预先确定的数据填充它。
- 我可以在内存中创建数据库,并以某种方式让 Givens 填充数据库。这似乎会使测试变得非常臃肿,但可能会给它们更多的控制权并使测试不那么脆弱。
- 我可以抽象每个数据库交互并使用模拟。不喜欢这个想法,因为我也想用它来测试数据库交互。
- 将数据库编译到测试中并依靠清理代码将其返回到基本状态(这对我来说似乎很狡猾)。不想对事务执行此操作,因为某些测试会进行多次交互(因此编写一个项目,然后尝试以不同的权限读回它)。
【问题讨论】:
标签: database integration-testing specflow acceptance-testing