2012-11-28 29 views
4

我們有一個使用Entity Code First的應用程序,並且我們添加了Devart for Oracle支持。我們有一系列通過Visual Studio測試運行器運行的集成測試,涵蓋種子數據測試。我們希望能夠在測試執行時爲SQL Server和Oracle運行這些測試。有沒有人有一個很好的角度來解決這個問題?每個連接字符串的C#集成測試運行

+1

運行測試兩次。每種類型一次。 – tsells

+0

希望有更多的懶惰和自動化的東西。這套測試將不斷擴大,我們不想增加指數維護。如果您知道製作這種自動化程序的簡單程序可能會滿足我們的需求。還請注意:這些測試在門控簽入上運行。 –

+0

我認爲你不明白的是這些應該被視爲兩個單獨的測試。您正在測試兩個單獨的平臺 - 即使它們正在經歷相同的操作。在構建級別自動執行此操作 - 僅運行套件兩次 - 每次運行一個單獨的數據庫目標。 – tsells

回答

1

您可以從配置文件中讀取連接字符串和其他設置信息。

爲每個數據庫/設置創建一個配置文件。

製作一個命令文件,每次配置執行一次測試一次。

0

那麼,如果你想要不同的環境設置,但仍然只編碼測試一次,但運行多次,怎麼樣Data Driven test

您可以使用[DataSource]屬性修飾您的測試。數據源本身可以是excel文件,CSV等,並且該文件可以包含連接字符串以及其他相關信息以配置環境。

在每次測試運行中,您將擁有一個表示您的環境數據的DataRow。

同樣的,如果你正在使用NUnit以及使用[ValueSource]屬性,可以實現和一些存儲位置,文件的類返回值的靜態方法提供的數據,等等。

隨着任何這些設置,測試將實際運行多次,以便每個環境都可以失敗或單獨傳遞。

這也是一種非常好的方法來測試一塊邏輯,但具有不同的場景和預期輸出。您可以在外部數據源中獲得輸入和預期輸出,並讓測試框架在所有場景中運行,並確保它們仍能按預期工作。這可能對你想要檢查的金融算法的黑盒測試可能是有用的,例如可能已知的結果,或者在Excel中使用相同的算法,例如,在有數百個場景進行比較的情況下。

這顯然不是說你不應該爲孤立的類寫實際的單元測試,它只是另一個添加到工具箱的工具。

+0

請注意,您只能添加一次DataSource屬性:http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools。unittesting.datasourceattribute(v = VS.80).aspx –

+0

正確的是,這個想法是有一個數據源,有多行,每個環境一個。 –