模拟对象与测试数据库

Jac*_*lls 12 unit-testing mocking

与具有已知数据的静态测试数据库相比,使用模拟对象的优势是什么,并且在对数据库进行测试时使用事务确保没有任何更改.

Ben*_*son 14

你可以做到这两点.使用模拟对象测试BLL逻辑,然后使用测试数据库测试DAL逻辑.这样,如果出现问题,您可以轻松地查看问题所在,哪个测试失败.

  • 措辞:我认为"BLL逻辑"将展现给"业务逻辑层逻辑".似乎额外的"逻辑"是多余的.此外,与"数据访问层"一起,这些在Microsoft产品中普遍使用,因此在回答这个与Microsoft无关的问题时,使用常用术语是有意义的. (4认同)

Lee*_*Lee 6

首先,使用模拟将比连接到外部数据库快得多.然而,主要原因是每次运行测试时模拟行为都是相同的,您无法保证像数据库这样的外部服务,这意味着单元测试不会随机失败.您还可以使用模拟对象轻松模拟要处理的任何类型的故障.

对于真实数据库运行集成测试然后测试配置和性能等问题也是一个好主意.