HOW TO:建立資料驅動型單元測試
您可以設定一個單元測試,以便擷取資料來源中的值,而不必將值輸入至測試方法。 此單元測試會針對資料來源中的每一個資料列連續執行。 這種作法可讓您輕鬆地在單一測試回合中測試各種輸入。
設定單元測試以便擷取資料來源中的值共分為兩個階段。 第一個階段是使用單元測試的屬性來建立單元測試方法與資料來源之間的連接。 第二個階段是指派方法的變數,以便從資料來源的適當資料行中擷取其值。 您可以在測試方法本身的邏輯中進行這個作業。
資料驅動型單元測試的範例
下圖將顯示兩個單元測試:第一個單元測試會加入兩個數字,而另一個單元測試則會串連名字與姓氏。 這些單元測試是設定來擷取資料庫中的值,以便進行測試。
資料驅動型單元測試
這一行會提供 DataSource 屬性和連接字串。 連接字串中的確切資訊會因您所使用的資料來源種類而有所不同。 在此範例中,我們使用了 Access 資料庫。
如果這些值來自資料庫資料表,它們就必須轉換成適當的型別。 在此範例中,第一個單元測試會將資料庫中的值轉換成字串,而第二個單元測試則將它們轉換成整數。
TestContext.DataRow 屬性會告知單元測試要從中擷取資料的資料列。 在本例中,它會從第一個資料列開始擷取資料,然後循序擷取,直到它到達資料表的最後一個資料列為止。 如需這個屬性的詳細資訊,請參閱 TestContext。
資料行的名稱會告知單元測試要從中擷取資料的資料行。
您可以在 [測試結果] 視窗中按兩下測試,藉以查看測試所使用之每個資料列的詳細結果。
資料驅動型單元測試的詳細結果。
建立單元測試與資料來源之間的連接
這是將單元測試設定為使用資料來源的第一個階段。 在這個階段中,您會建立單元測試方法與資料來源之間的連接。
這個程序將示範如何使用單元測試的屬性來建立連接。 不過,您也可以建立 app.config 檔案並將連接資訊加入至此檔案,藉以建立連接。 使用 app.config 檔案的優點在於,您可以變更資料庫的位置,而不需要對單元測試本身進行變更。 如需如何建立和使用 app.config 檔案的詳細資訊,請參閱逐步解說:使用組態檔定義資料來源。
注意事項 |
---|
如果您很熟悉資料連接字串,就可以在 [TestMethod()] 項目的第一個括弧後面輸入資料連接字串,而不需要使用 [屬性] 視窗。 |
[DataSource(在此輸入資料連接字串), TestMethod()]
若要將單元測試連接至資料來源
開啟包含您要使用資料來源之測試方法的方案。
指向 [測試] 功能表上的 [視窗],然後按一下 [測試檢視]。
在 [測試檢視] 視窗中,以滑鼠右鍵按一下您要使用資料來源的單元測試,然後按一下 [屬性]。
在 [屬性] 視窗中,按一下 [資料連接字串],然後按一下省略符號 (...)。
遵循 [新測試資料來源精靈] 中的指示進行,建立資料連接。
連接字串就會加入至單元測試,位於 [TestMethod()] 項目的第一個括弧後面。
指派變數以便從資料來源中擷取其值
這是將單元測試設定為使用資料來源的第二個階段。 在這個階段中,您會指派方法的變數,以便從資料來源的適當資料行中擷取其值。
若要指派變數以便從資料來源中擷取其值
開啟包含您要使用資料來源之測試方法的單元測試檔案,然後找出測試方法中的變數。
針對您想要取自資料來源的每個變數,使用 TestContext.DataRow["NameOfColumn"] 語法。
注意事項 |
---|
您可能必須將資料型別從資料來源的型別轉換成測試程式碼專案的型別,如上一則範例所示。 |
執行單元測試並檢視結果
資料驅動型單元測試的執行方式與任何其他單元測試的執行方式一樣。 您可以在 [測試結果] 視窗中按兩下測試,藉以檢視測試所使用之每個資料列的詳細結果。
若要執行並檢視資料驅動型單元測試的結果
以滑鼠右鍵按一下單元測試中的任何位置,然後按一下 [執行測試]。
測試執行之後,在 [測試結果] 視窗中按兩下測試,以便檢視 [資料驅動型測試結果] 視窗中每個測試反覆項目的結果。