只是想知道是否有人对如何测试数据访问方法有任何想法。我发现测试检索数据访问方法要容易得多,因为我可以模拟出ExecuteReader
并返回一个填充的dataTable.CreateDataReader()
. 通过这样做,我可以测试如果返回结果集,我的对象是否正确填充。
但是我如何将其转换为我的持久方法(即添加、更新、删除等)。我要测试的是它是否正确填充命令参数等。
有任何想法吗?干杯
只是想知道是否有人对如何测试数据访问方法有任何想法。我发现测试检索数据访问方法要容易得多,因为我可以模拟出ExecuteReader
并返回一个填充的dataTable.CreateDataReader()
. 通过这样做,我可以测试如果返回结果集,我的对象是否正确填充。
但是我如何将其转换为我的持久方法(即添加、更新、删除等)。我要测试的是它是否正确填充命令参数等。
有任何想法吗?干杯
我们使用内存数据库(hsql)进行单元测试。设置启动事务,而拆解将其回滚。然后你总是知道单元测试中数据库的状态。
对于我们的 o/r 映射器框架 LLBLGen Pro,我们使用专门的数据库进行测试,并为每组功能使用不同的测试项目。所以我们有一个用于插入/更新的特殊数据库,例如一个用于测试继承相关操作的特殊数据库、一个用于大集合的特殊数据库、一个用于获取的特殊数据库。最重要的是,我们在不同的项目中分离了单元测试:面向获取、面向 linq 提供者、面向插入/更新/删除、面向内存中的东西等。
这样,测试是可维护的并且不会相互影响。借助特殊的数据库,我们知道会发生什么以及该做什么。
当然,这还取决于您对持久性逻辑测试的含义:如果您想像我们一样测试框架级例程,那么模拟实际上并没有那么有用:您想在涵盖的场景中测试真正的交易大多数(如果不是全部)案例。如果您真的在谈论使用框架级代码(例如您的存储库代码)测试您的代码,那么模拟可以提供帮助,只要使用的框架当然没有错误。:)