【问题标题】:CLR SQL Stored Procedures Testing with Unit Test Project使用单元测试项目进行 CLR SQL 存储过程测试
【发布时间】:2010-11-04 22:32:42
【问题描述】:

我刚刚开始使用 VS2008 为 SQL 2008 编写 clr 存储过程。在编写 c# 代码时,我习惯于有一个单独的“测试项目”,我将在其中放置所有单元测试代码,但它首先出现脸红,我不能有与存储过程的 clr sql 项目相同的设置。 “感觉”可以做到这一点,但我缺少几个配置参数,但我不确定这些可能是什么。

我正在使用

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

我的要求是:

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

有谁知道我如何让单元测试项目正确地将存储过程分解到服务器,连接到 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


    【解决方案1】:

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      创建项目时,我有一个带有数据库的树视图节点和一个名为 SQL Server Project 的项目。

      alt text http://img514.imageshack.us/img514/8523/81345560.jpg

      接下来,当创建项目模板时,我会得到测试脚本 (Test.sql),我可以在其中使用常见的 sql 过程和命令测试我的所有 SQL Server CLR 类。

      alt text http://img17.imageshack.us/img17/7826/38591345.jpg

      有了这个,您就可以拥有一个带有调试功能的 CLR 开发接口。 Test.sql 就像 CLR 类的单元类。

      PS。不要忘记 SQL Server 配置中的活动 CLR。​​

      【讨论】:

      • 链接已损坏
      【解决方案3】:

      我不久前wrote pretty extensively on this subject。我总是以 TDD 方式实现我的数据访问组件。查看链接中的帖子 - 文章本身可能无法为您提供最佳概述,但您也可以下载示例代码并在闲暇时进行检查。

      我应该认为它符合您的所有要求。

      【讨论】:

      • 链接已损坏:/
      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 2023-04-03
      • 2010-11-10
      相关资源
      最近更新 更多