Database 带存储程序的TDD

Database 带存储程序的TDD,database,stored-procedures,Database,Stored Procedures,在.Net(c#)中编写代码时,我使用NUnit和Rhino Mock进行测试。没有做太多的数据库编码(存储过程)。我们如何使用数据库编码(存储过程)进行TDD呢?1)有一个框架,允许您获取DB对象并复制它。当您的数据库源代码(包括表定义)存储在文件系统中时,这种方法非常有效 临时数据库中的表副本。包括索引等 存储过程或触发器的副本,用临时数据库替换所有DB名称前缀表/其他被称为SP的SP 能够使用从现有表克隆的数据(使用某些筛选器)或存储的准备好的数据集(例如,作为bcp输入文件)预填充表

在.Net(c#)中编写代码时,我使用NUnit和Rhino Mock进行测试。没有做太多的数据库编码(存储过程)。我们如何使用数据库编码(存储过程)进行TDD呢?

1)有一个框架,允许您获取DB对象并复制它。当您的数据库源代码(包括表定义)存储在文件系统中时,这种方法非常有效

  • 临时数据库中的表副本。包括索引等

  • 存储过程或触发器的副本,用临时数据库替换所有DB名称前缀表/其他被称为SP的SP

  • 能够使用从现有表克隆的数据(使用某些筛选器)或存储的准备好的数据集(例如,作为bcp输入文件)预填充表

2) 拥有一个框架,该框架使用指定的测试数据加载指定的测试表,然后克隆所有其他需要的SP/触发器代码

3) 有一个框架来执行克隆的存储过程,并评估从这些过程返回的结果和表中留下的数据,以防它们更新数据

为了让它更有味道,我们花了几个人月的时间开发和部署了一个完整的TDD系统,它包含了这里作为一个小子集列出的所有功能


还有一些商业产品可供选择:


此外,还有针对特定DB后端的产品,不确定使用哪一种:

博士后:


补充阅读:

MSDN


如果您使用的是SSDT数据库项目,您可以在SSDT单元测试中使用重命名技巧来模拟代码入口点,就像在常规C#中一样。不是真正的国际奥委会的东西,但得到的工作,直到更好的事情来了

我写了一篇关于它的帖子:

您还可以为您的开发使用tSQLt,它本身支持比SSDT更好的DI


谢谢DVK。我们目前正在使用Sybase。我找不到Sybase的任何框架。我们在Sybase上,所以我们推出了自己的:)