使用单元测试项目进行CLR SQL存储过程测试

ben*_*ben 9 sql clr unit-testing stored-procedures

我刚刚开始使用VS2008为SQL 2008编写clr存储过程.在编写c#代码时,我习惯于单独的"测试项目",我将放置所有单元测试代码,但是我乍一看似乎是与存储过程的clr sql项目不能具有相同的设置.感觉就像这样可以做到,而且我缺少一些配置参数,但我不确定那些可能是什么.

我在用

  • Visual Studio 2008
  • MS测试
  • MS SQL 2008

我的要求是:

  1. 在visual studio调试器中调试存储过程
  2. 有一堆单元测试来测试存储过程

有谁知道如何让单元测试项目正确解密存储过程到服务器,连接到SQL服务器,并允许我单步执行单元测试到服务器上的存储过程?

********更新

感谢大家到目前为止的答案,但他们并不是我正在寻找的东西.

下面的Mark Seemann的答案是一个我不了解的有趣方法,在将数据库重置为已知状态时我肯定会使用.但是,我正在寻找调试CLR存储过程,并且它没有出现Mark的方法将允许我从我的单元测试项目,到SQL服务器,并调试位于服务器上的代码.

我希望实际调试服务器上的C#,就像下面列出的解决方案pho3nix一样.但是,使用此标准方法,您需要使用"Test.sql"文件编写测试脚本,而不是使用Visual Studio中的单元测试项目.

我希望我的解决方案中有两个项目,一个用于我的CLR存储过程,另一个用于我的单元测试项目.当我想在我的单元测试项目中运行我的测试时,我希望对我的CLR存储过程项目所做的所有更改都将发布到服务器,测试项目将开始执行,如果我在CLR中设置了一个断点单元测试开始测试存储过程时它将在服务器上中断,然后我可以逐步执行代码.

到目前为止,我发现的最接近的解决方案是Alex Kuznetsov和Alex Styler,但是使用这个解决方案我无法进入SQL服务器.

****更新2****

这更像是一个让人回答这个问题的"磕磕绊绊"...我仍然没有从单元测试中踩到SQL服务器的运气.还有其他想法吗?

mfa*_*mkh 3

您必须先在连接上启用 SQL/CLR 调试,然后才能调试代码。为此,请按照此处的说明进行操作 :http://msdn.microsoft.com/en-us/library/ms165039(VS.80 ).aspx

请注意,当您调试 C# SP 时,SQL Server 中的所有托管线程都将在调试期间挂起

希望这可以帮助。