单元测试TSQL

Ryu*_*Ryu 9 t-sql sql-server testing unit-testing

是否有人为他们的TSQL存储过程,触发器,函数等编写单元测试

我最近开始制作数据库并恢复并安装部分自动Cruise Control构建过程.现在我正在考虑将它带到我们进行安装的下一级,然后运行存储过程测试列表等.

我打算使用MsBuild Extensions来调用我自己的调用.但是我知道http://www.tsqltest.org/http://tsqlunit.sourceforge.net/.我也知道TFS有sql测试.

我只是想看看现实世界中的人们在做什么,以及他们是否有任何建议.

谢谢

Chr*_*fer 0

我在此处的一个项目中使用了 Visual Studio 2008 数据库版本中内置的数据库测试。它运行良好,但感觉更像是 Visual Studio 的第三方附加组件,而不是本机组件。我对此感到的一些痛苦是:

  • 由于 SQL 代码位于 res 文件中,并且单个代码文件可以包含多个测试,因此根据表/列名称搜索测试并不那么容易。
  • 因为多个测试位于相同的代码文件中,所以您会遇到一些烦人的变量名称冲突(例如,如果您在一个代码文件中有两个测试,则这些测试的所有断言都必须具有唯一的名称;这意味着您的断言名称将可能看起来像“testname_assertionname”,这确实没有必要)。
  • 重构测试并不容易 - 例如,如果您想将测试从一个代码文件移动到另一个代码文件,最简单的方法是在新文件中从头开始创建测试,因为测试的零散部分分散在代码文件中。 res 文件和代码文件。

所有这些,正如我一开始所说的那样——它确实运作良好。不幸的是,我们还没有将这些测试添加到我们的持续集成服务器中,所以我无法评论自动化运行这些测试有多么容易。我们正在使用 TFS 进行 CI,并且我假设测试的自动化与标准单元测试的自动化非常相似;换句话说,似乎应该有一个 MSTest 命令行来运行测试。

当然,如果您获得运行 Visual Studio 2008 DB Edition 的许可(据我所知,它现在包含在 VS 2008 Pro 许可证中),这只是一个选项。