多年来,我一直在使用一种名为qmTest的测试工具,它允许我为一些Firebird数据库进行测试驱动的数据库开发。我为一个新功能(表,触发器,存储过程等)编写测试,直到它失败,然后修改数据库直到测试通过。如果有必要,我会在测试上做更多工作,直到它再次失败,然后修改数据库直到测试通过。一旦完成对该功能的测试并且100%的时间通过,我将其保存在数据库的一套其他测试中。在继续进行另一个测试或部署之前,我将所有测试作为套件运行,以确保没有任何损坏。测试可以依赖于其他测试,结果将记录并显示在浏览器中。
我确信没有新的东西。
我们的商店旨在标准化MSSQLServer,我想使用相同的程序来开发我们的数据库。有没有人知道允许或鼓励这种开发的工具?我相信团队系统确实如此,但我们目前并不拥有,并且可能不会持续一段时间。
我不反对编写脚本,但欢迎使用更加图形化的环境。
有什么建议吗?
答案 0 :(得分:2)
团队系统可能是最知名的解决方案,但您也可以尝试TSQLUnit(SourceForge)。
我自己没有使用它,但this article做了很好的介绍。
答案 1 :(得分:1)
结帐http://www.sqlservercentral.com/articles/Testing/66553/ 和http://www.sqlservercentral.com/articles/Database+Design/66845/
这是一篇关于在T-SQL中做所有事情的相当粗略的文章。
您是否考虑过使用NHibernate并仅使用TestDriven或类似测试?
答案 2 :(得分:1)
在我无法访问db pro的团队系统的项目中,我使用了sql脚本和msbuild以及用于msbuild(http://www.codeplex.com/sdctasks)的sdc任务库。 msbuild脚本调用sdc任务以特定顺序运行我的sql脚本(例如,创建db,创建表等...)和特定的连接字符串。脚本始终检查对象是否存在并先拆除并重新构建它。
sql和msbuild脚本我放在一个常规的visual studio数据库项目中(没有什么特别的,所以你可以选择使用一个简单的空项目),所以一切都是源代码控制的。
使用这样一组脚本,您可以为每个测试运行设置一个新数据库。然后,您可以使用插入脚本用数据填充它并对其运行单元测试。
这些脚本对于在不同环境中从头开始设置数据库也很有用(DEV / TST / QUA /...)
答案 3 :(得分:1)
我能够充分apply a test driven development style against SQL Server databases using TSQLUnit。我按照你所描述的相同流程编写了一个单元测试sproc,它首先失败,然后进行必要的更改以使测试通过。随着时间的推移,我还建立了一套测试,在执行时验证在进行任何新的更改时没有任何损坏。
存在一些困难(包括为现有的sprocs编写测试时遇到极大困难),但它特别适用于模式更改。但是,我建议查看T.S.T. the T-SQL Test Too1,这与TSQLUnit(I had to roll my own)不同,它内置了对断言的支持。