我很想知道人们在开发自动化单元测试时采用了什么方法来运行数据库
您是否在运行测试套件之前安装QA数据库(已知起始点).
要么
每当发生数据库调用时,您是否构建了数据库存根?
编辑:相关问题,但不是重复,但对于手头的问题非常重要:我如何对持久性进行单元测试?
站在"数据库存根"通常称为"虚拟存储库"或"模拟存储库".他们是个好主意.您可以手动编写代码(对于简单的情况不难)或使用像Rhino Mocks这样的框架来生成它们.你没有提到你正在使用的语言.犀牛模拟是为了.Net.
如果您使用模拟存储库,那么您可以针对使用数据的代码运行测试,而无需实际使用数据库来存储数据.这使测试运行得非常快,这是一件好事.
当然,您仍然需要在某个阶段测试真实存储库,这更是一个问题.这些测试运行速度较慢,因为它们使用真正的数据库.由于速度和依赖性问题,有些人将其归类为"集成测试"而不是单元测试.
我不介意你这么称呼它们,但是将这些测试分开是一个好主意.
这里数据一致性的一个好主意是在测试之前开始db事务,然后再回滚它.这样,数据库状态就会恢复到测试之前的状态.
如果您使用NHibernate的,你可以很容易检验对内存中的SQLite数据库,这是非常快的.