单位测试大数据库依赖的.NET中间件的最佳方法是什么?例如.从多个数据库读取数据的操作过程,然后将其组合并写入其他数据库?
数据库是否应填充静态数据,这些静态数据在每个单元测试运行中以某种方式重置?整个sql Server访问应该以某种方式嘲笑吗?在现实世界中单元测试这样的应用程序是不可行的吗?
解决方法
答案是嘲笑的
但是我找到的方法如下.
将DAL分为2层.底部只是对数据库执行原子读写操作 – 这些对象都实现了一组接口IReadFromDB和IWriteToDB.
然后,您可以在更高的DAL级别创建读写业务逻辑,而不是引用读取和写入数据库的对象引用接口并使用属性来替代功能.我倾向于在构造函数中包含所需的功能对象,以便事情可以“开箱即可”.
这将使其成为“交换”功能的一个纽带,从而对业务逻辑进行单元测试.
至于测试DB读写…我没有找到一种不涉及工作的方式.
我通常使用与数据库副本不同的连接字符串,然后编写单元测试的数据生成和清理代码,使db的状态与前后相同.
是的,它耗时…但是不会冒险疏远客户端.这取决于你的优先事项.
有人提到了性能测试.我不认为这是单元测试的一部分.我通常使用测试工具与调试代码结合使用,只是因为小部件的性能往往是误导性的 – 当您转向大图时,实际上是套管问题的部件通常不是本地化测试在我的经验中标记的部分.