【发布时间】:2010-11-04 22:32:42
【问题描述】:
我刚刚开始使用 VS2008 为 SQL 2008 编写 clr 存储过程。在编写 c# 代码时,我习惯于有一个单独的“测试项目”,我将在其中放置所有单元测试代码,但它首先出现脸红,我不能有与存储过程的 clr sql 项目相同的设置。 “感觉”可以做到这一点,但我缺少几个配置参数,但我不确定这些可能是什么。
我正在使用
- Visual Studio 2008
- 质谱测试
- MS SQL 2008
我的要求是:
- 在 Visual Studio 调试器中调试存储过程
- 有一堆单元测试来测试存储过程
有谁知道我如何让单元测试项目正确地将存储过程分解到服务器,连接到 sql 服务器,并允许我逐步完成单元测试到服务器上的存储过程?
****更新****
感谢大家到目前为止的答案,但它们并不是我想要的。
Mark Seemann's 下面的答案是一种我不知道的有趣方法,在将我的数据库重置为已知状态时我肯定会使用它。但是,我希望调试 CLR 存储过程,但 Mark 的方法似乎不允许我从单元测试项目单步执行到 SQL 服务器,并调试服务器上的代码。
我希望实际调试服务器上的 C#,就像下面列出的解决方案 pho3nix 一样。但是,使用这种标准方法,您需要使用“Test.sql”文件而不是使用 Visual Studio 中的单元测试项目来编写测试脚本。
我希望我的解决方案中有两个项目,一个用于我的 CLR 存储过程,一个用于我的单元测试项目。当我想在我的单元测试项目中运行我的测试时,我希望对我的 CLR 存储过程项目所做的所有更改都将发布到服务器,测试项目将开始执行,如果我在 CLR 中设置断点存储过程当单元测试开始测试该存储过程时,它将在服务器上中断,然后我可以单步执行代码。
到目前为止我找到的最接近的解决方案是Alex Kuznetsov and Alex Styler,但是使用此解决方案我无法单步执行 SQL 服务器。
****更新 2****
这更像是一个“颠簸”来重新提出这个问题......我仍然没有运气从单元测试中进入 SQL 服务器。还有其他想法吗?
【问题讨论】:
标签: sql unit-testing stored-procedures clr