2010-03-29 144 views
0

任何人都可以指示我如何獲得NUnit測試來運行.sql文件來創建/設置數據庫。單元測試運行.sql腳本到SQL創建數據庫

我知道NUnit中的TestFixtureSetUp和TestFixtureTearDown屬性/方法。

所以我知道如何在所有或每個單元測試之前和之後調用方法。

我只是不確定如何加載和執行.sql文件的內容再次以編程方式SQL Server 2005數據庫。

任何示例?

這是我們的TDD/CI的一部分。我們希望在執行單元測試之前創建數據庫並拆除數據庫。

乾杯,

- 李

UPDATE: 我現在已經退出了.SQL腳本的數據庫/運行的創建使用批處理文件的單元測試之外請致電sqlcmd。這似乎很好。

回答

0

我在.bat文件中使用sqlcmd.exe作爲CI構建的獨立部分來運行.sql腳本,以便在單元測試之前立即執行。

這似乎是一個可以接受的方式。

0

我使用每行一個sql語句的文本文件。該TestFixtureSetUp方法讀取該文件(逐行),並與ADO.NET的IDbCommand的執行每個SQL語句:

類似:

using (IDbConnection cnn = OpenConnection(connectionString)) 
    foreach (string line in ReadFile(sqlFile)) 
    using (IDbCommand cmd = cnn.CreateCommand()) { 
     cmd.CommandText = line; 
     cmd.ExecuteNonQuery(); 
    } 

,你可能也想看看像SQL Installer.NET

+0

不好,ExecuteNonQuery似乎不喜歡GO,EXEC或USE命令。可以在單元測試之外創建數據庫,但仍然是CI構建的一部分。 – 2010-03-30 11:13:20

0

看看Fluent-Migrator
它能夠針對SQL Server 2005運行SQL腳本,並且可以從nant運行。

該項目的目的是允許開發人員在域更改時遷移數據庫,特別是TDD,但如果需要也允許更改的反轉。

+0

Cheers Nathan,但我正在考慮從單元測試運行.sql腳本,正如我在我的問題中所解釋的那樣。感謝您提供替代方案。 – 2010-03-30 07:37:51