Ami*_*abh 8 .net nhibernate tdd nunit
是否有为数据访问层编写单元测试的框架?这有几个问题.
1.如何填充数据库?
2.我们如何确保一个测试不修改db中可能无法通过另一个测试的值?
是否有一个可以处理上述问题的良好框架?
更新:我遇到了nDBUnit,它可以解决测试数据访问层的基础设施问题.
Aar*_*ght 17
我想我会插话,因为到目前为止我真的不喜欢一些答案.
无论你称之为"单元测试"还是"集成测试"或"supercalifragilisticexpialidocious测试",在这种情况下都无关紧要; 对数据访问组件只有一个有效的测试,它是在实际数据上测试它.显然不是生产数据,而是合理的传真.
您需要做的第一件事是将数据库本身置于源代码管理之下.可悲的是,没有这方面的框架; 微软在某些版本的VSTS中占据了一席之地,但最终结果仍然缺乏.至少在今天的世界里,你将不得不自己做很多这方面的工作.但要认真对待 - 当主要更新变得拙劣并且您需要回滚数据库时,您不会后悔.
您在源代码管理下放置的内容应该是生成最新架构所需的一切,通常是基线脚本,加上"配置数据"脚本(即枚举表的内容),以及升级脚本以反映最近的架构更改.这为您提供了在临时数据库上执行"实时"测试所需的几乎所有内容; 您的测试只需要从源代码控制下载这些脚本并在测试服务器和/或不同的数据库实例上运行它们,通常使用SQL管理对象来运行所述脚本(SMO可以处理GO
语句等;常规SqlConnection
不能).
各种工具可以帮助您在测试数据库中生成测试内容.可能最受欢迎的是Red Gate的SQL数据生成器.这些工具还可以生成用于创建数据的脚本,这是您在测试中使用的内容.或者,如果您这样选择,则可以从生产数据库中清除数据并使用SQL Server Management Studio编写您选择保留用于测试的任何数据.无论哪种方式,将测试数据脚本保存在源代码管理中,与架构脚本相同,并且当您需要测试DAL时,请在启动数据库实例后下载这些脚本并使用它们填充数据.
我希望有是一个框架,做到这一切给你,但与工具,库和良好的发展实践正确的集合,你可以使之成为一个更痛苦的过程这一点.
归档时间: |
|
查看次数: |
1669 次 |
最近记录: |