使用生成的DAL代码进行单元测试
-
03-07-2019 - |
题
我使用代码生成器(CodeSmith和.NetTiers模板)生成所有DAL代码。我为我的代码(业务层)编写单元测试,这些测试运行起来变得非常慢。问题是,对于每个测试,我重置数据库以使其处于干净状态。此外,由于我进行了大量测试,似乎数据库操作的延迟总计有点延迟。
所有数据库操作都是通过.NetTiers生成的 DataRepository
类执行的。你知道是否有办法生成(或自己编写)一个使用内存存储而不是使用数据库的mock-DataRepository?
通过这种方式,我可以在单元测试中使用这个模拟存储库,加快它们的速度,而不会实际更改我当前的代码!
其他提示
从问题描述中,我认为您正在执行集成测试,因为您的测试正在使用Business和DAL以及实时数据库。
对于单元测试,您处理一层代码,其中所有其他依赖项都是模拟的或存根的。使用这种方法,您可以在每次增量代码更改时快速执行单元测试。
你可以使用各种模拟框架,比如Rhino Mock,Moq,typemock等等。 (在我的项目中,我使用Rhino mock来模拟DAL层和单元测试隔离中的业务层)
戒
我们的一些单元测试使用从XML获取的数据,这些数据是从数据库生成的,用于模拟数据库访问。 DAL类被模拟类替换,因为它们都存储在DI容器中。
xml的生成是自定义代码,如果您找到一个开源解决方案,那么我很高兴听到它。
在Stefan的回答之后编辑:我记得另一个团队使用 SQL CE 作为他们的测试数据库
不隶属于 StackOverflow