2009-06-22 210 views
9

我剛剛進入使用VS2008編寫SQL 2008 CLR存儲過程在編寫C#代碼,我習慣了有一個單獨的「測試項目」在那裏我會放置所有我的單元測試代碼,然而它似乎在第一次臉紅,我不能有一個與存儲過程的clr sql項目相同的設置。它'覺得'可以做到這一點,並且我缺少一些配置參數,但我不確定這些參數是什麼。CLR SQL存儲過程測試與單元測試項目

我使用

  • 的Visual Studio 2008
  • MS測試
  • MS SQL 2008

我的要求是:

  1. 調試在視覺上的存儲過程工作室調試器
  2. 有一堆單元測試來測試存儲過程

有誰知道我怎麼能有單元測試項目正常depoly存儲過程服務器,連接到SQL服務器,並允許我通過單元測試來檢查坐在服務器上的存儲過程?

**** ****更新

謝謝大家這麼遠的答案,但他們都沒有什麼excatly我要找的。

Mark Seemann's下面的答案是我不知道的一個有趣的方法,當涉及到將數據庫重置爲已知狀態時,我一定會使用它。不過,我正在調試CLR存儲過程,並且沒有顯示Mark的方法會允許我從單元測試項目到SQL服務器,並調試坐在服務器上的代碼。

我期待實際調試C#坐在服務器上,就像下面列出的解決方案pho3nix。但是,使用這種標準方法,您需要使用'Test.sql'文件編寫測試腳本,而不是使用Visual Studio中的單元測試項目。

我希望我能在我的解決方案兩個項目,一個是我的CLR存儲過程和一個爲我的單元測試項目。當我想在我的單元測試項目運行我的測試中,我希望所有的我的CLR存儲過程的項目所做的更改將被髮布到服務器,測試項目將開始執行,如果我在CLR設置一個斷點當單元測試開始測試存儲過程時,存儲過程將在服務器上中斷,然後我可以遍歷代碼。

我到目前爲止發現的最接近的解決方案是通過Alex Kuznetsov and Alex Styler,但是採用這種解決方案我無法通過步到SQL服務器。

****更新2 ****

這更多的是一種「碰撞」把這個問題丟回了......我仍然沒有運氣從單位步進到SQL服務器試驗。任何其他想法?

回答

1

I wrote pretty extensively on this subject前一段時間。我總是以TDD方式實現我的數據訪問組件。查看鏈接中的文章 - 文章本身可能無法爲您提供最佳的概述,但您也可以下載示例代碼並在自己的閒暇時間進行檢查。

我應該認爲它符合您的所有要求。

2

創建項目時,我有一個帶有數據庫和名爲SQL Server Project的項目的treeview節點。

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

下一頁創建項目模板時,我得到的測試腳本(的Test.sql),我可以測試我的所有SQL Server CLR類,使用常見的SQL程序和命令。

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

有了這個,你可以有一個與調試CLR的開發接口。 Test.sql就像CLR類的單元類。

PS。不要忘記SQL Server配置中的活動CLR。