HOW TO:建立資料驅動型自動程式碼 UI 測試
使用 自動程式碼UI測試,來測試應用程式的使用者介面 (UI) 是否正確運作。自動程式碼 UI 測試執行應用程式使用者介面控制項的動作,並驗證指定的控制項是否顯示正確值。如需如何建立自動程式碼 UI 測試的詳細資訊,請參閱 建立自動程式碼 UI 測試。
需求
- Visual Studio Ultimate, Visual Studio Premium
建立具有指定之資料的自動程式碼 UI 測試之後,您可能要以不同的資料集來多次執行自動程式碼 UI 測試,以測試不同的條件。若要這樣做,您可以從資料來源加入參數值,以建立資料驅動型自動程式碼 UI 測試。測試來源中的每一個資料列都是自動程式碼 UI 測試的反覆項目。測試的整體結果取決於所有反覆項目的結果。例如,如果一個測試反覆項目失敗,整體測試結果就是失敗。
當透過錄製方法或判斷提示來產生自動程式碼 UI 測試的方法或判斷提示時,錄製的方法中參考的所有常數都會參數化至參數類別。例如,如果您加入名為 AddTwoNumbers 的方法,則自動程式碼 UI 測試架構會自動產生另一個名為 AddTwoNumbersParams 的類別,並在這個類別中針對您錄製該方法時使用的每個常數值各加入一個欄位。如果您產生名為 AssertForAdd 的判斷提示方法,此架構會針對預期值加入名為 AssertforAddExpectedValues 的類別。這些類別是自動產生的,將用於下列步驟。
變更測試以使用參數的資料來源,同時也會變更測試的原始程式碼檔 (i.e. CodedUITest1.cs).您不可以修改 UIMap.Designer.cs 檔案中的程式碼。
在建立自動程式碼 UI 測試之後,您可以使用下列程序中的步驟,將資料來源和參數加入至測試。這個範例假設方案中具有下列程式碼項目:
名為 CodedUITest1. 的自動程式碼 UI 測試類別
名為 CodedUITestMethod1(). 的測試方法。
測試方法用於計算將兩個數相加的簡式計算器應用程式,可驗證是否已正確將它們相加,如果正確,此測試才算成功。
資料來源是包含下列資料的 .csv 檔案:
Input1 |
Input2 |
ExpectedResult |
---|---|---|
3 |
4 |
7 |
5 |
6 |
11 |
1200 |
24000 |
25200 |
建立檔案,並加入至自動程式碼UI測試專案中。
建立資料驅動型自動程式碼 UI 測試
若要建立資料驅動型自動程式碼 UI 測試
在 [方案總管],開啟包含您的自動程式碼 UI 測試專案的方案,接著開啟要編輯的自動程式碼 UI 測試。
在程式碼中,直接在測試方法的正上方一行插入資料來源屬性。您可以藉由複製至您的程式碼並進行必要的自訂來使用在下表中範例資料來源字串。
日期來源型別
資料來源屬性。
CSV
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]
Excel
DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
在 Team Foundation Server 的測試案例
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://vlm13261329:8080/tfs/DefaultCollection;Agile", "30", DataAccessMethod.Sequential), TestMethod]
XML
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\data.xml", "Iterations", DataAccessMethod.Sequential), DeploymentItem("data.xml"), TestMethod]
SQL Express
[DataSource("System.Data.SqlClient", "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True", "Data", DataAccessMethod.Sequential), TestMethod]
現在,資料來源可用於此測試方法中。您可以使用 TestContext.DataRow 存取資料來源中的目前資料列。您可以利用下列語法來存取每個資料行:
string paramVal = TestContext.DataRow["Input1"]
在 [方案總管] 中,開啟 CodedUITest1.cs 檔案。對 CodedUITestMethod1() 方法進行下列變更:
在 AddTwoNumbers 方法呼叫之前加入下列兩行程式碼,針對要加入的數字提供值。
this.UIMap.AddTwoNumbersParams.TextInput1EditText = TestContext.DataRow["Input1"].ToString(); this.UIMap.AddTwoNumbersParams.TextInput2EditText = TestContext.DataRow["Input2"].ToString();
在 AssertforAdd 方法呼叫之前加入下列一行程式碼,提供判斷提示方法的值。
this.UIMap.AssertforAddExpectedValues.TextAnswerEditText = TestContext.DataRow["ExpectedResult"].ToString();
已加入參數和資料來源的自動程式碼 UI 測試方法如下所示:
[DeploymentItem("DataDriven.csv"), DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\DataDriven.csv", "DataDriven#csv", DataAccessMethod.Sequential), TestMethod] public void CodedUITestMethod1() { // To generate code for this test, select "Generate Code for // Coded UI Test" from the shortcut menu and select one of // the menu items. this.UIMap.AddTwoNumbersParams.TextInput1EditText = TestContext.DataRow["Input1"].ToString(); this.UIMap.AddTwoNumbersParams.TextInput2EditText = TestContext.DataRow["Input2"].ToString(); this.UIMap.AddTwoNumbers(); this.UIMap.AssertforAddExpectedValues.TextAnswerEditText = TestContext.DataRow["ExpectedResult"].ToString(); this.UIMap.AssertforAdd(); }
儲存對 CodedUITest1.cs 原始程式碼檔所做的變更。
若要執行自動程式碼 UI 測試,請以滑鼠右鍵按一下程式碼編輯器中的自動程式碼 UI 測試並選取 [執行單元測試]。
測試執行之後,所有測試反覆項目的整體測試結果會顯示在 [測試結果] 視窗中。若要查看每個反覆項目的詳細資料,請按兩下 [測試結果] 中的測試。
指引
如需詳細資訊,請參閱 要測試與 Visual Studio 執行的傳遞– 2012 年第 2 章:單元測試:測試內 和 要測試與 Visual Studio 執行的傳遞– 2012 年第 5 章:自動化系統測試