Emi*_*nov 5 database testing integration-testing unit-testing mocking
我在测试数据库调用时多次完成的是设置数据库,打开事务并在最后回滚它.我甚至使用了我在每次测试中创建和销毁的内存中的sqlite数据库.这工作并且相对较快.
我的问题是:我应该模拟数据库调用,我应该使用上面的技术还是应该同时使用两者 - 一个用于单元测试,一个用于集成测试(至少对我而言,似乎是双重工作).
问题是,如果您使用设置数据库,打开事务和回滚的技术,您的单元测试将依赖于数据库服务,连接,事务,网络等.如果你嘲笑它,你的应用程序中没有依赖于其他代码片段,并且没有外部因素影响你的单元测试结果.
单元测试的目标是测试最小的可测试代码而不涉及其他应用程序逻辑.使用IMO技术时无法实现这一点.
通过抽象数据层使代码可测试是一种很好的做法.它将使您的代码更健壮,更易于维护.如果实现存储库模式,则模拟数据库调用相当容易.
单元测试和集成测试也满足不同的需求.单元测试是为了证明一段代码在技术上是有效的,并且可以捕获角落案例.集成测试根据软件设计验证组件之间的接口.仅单元测试无法验证软件的功能.
HTH
归档时间: |
|
查看次数: |
627 次 |
最近记录: |