Unit Test裡的Data Test

來源:互聯網
上載者:User

用VS內建的Unit Test測試一個方法時,若需要大量的輸入參數,可以按照以下方法把參數放在一個檔案(資料庫也可)裡,可以省去重複代碼。

假設要測試的方法為:

static int Sum(int x, int y)   {       return x + y;   }  

 

右鍵這個方法,自動建立出unit test工程,這個大家都知道的,就不說了

建立的測試代碼如下:

        /// <summary>           ///A test for Sum           ///</summary>           [TestMethod()]           [DeploymentItem("ConsoleApplication1.exe")]           public void SumTest()           {               int x = 0; // TODO: Initialize to an appropriate value               int y = 0; // TODO: Initialize to an appropriate value               int expected = 0; // TODO: Initialize to an appropriate value               int actual;               actual = Program_Accessor.Sum(x, y);               Assert.AreEqual(expected, actual);               Assert.Inconclusive("Verify the correctness of this test method.");           }  

在菜單中選擇Test下的Windows => Test View

圖。。。

在出現的Test View列表中選擇要測試的方法,右鍵選擇屬性

圖。。。

點Data Connection String右邊的小button,

圖。。。

我們可以選擇其中任一種,這裡我們選擇xml,這個xml中描述了我們需要用到的資料

圖。。。

如果xml格式正確,可以預覽出

我的xml如下:

<InputParameter>      <Parameter>          <x>0</x>          <y>0</y>          <expect>0</expect>      </Parameter>      <Parameter>          <x>65536</x>          <y>1</y>          <expect>65537</expect>      </Parameter>      <Parameter>          <x>-65536</x>          <y>-1</y>          <expect>-65537</expect>      </Parameter>  </InputParameter>  
 

一路OK下去,最後發現我們的測試方法上面增加了一段話:

  • [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\SumParameters.xml", "", DataAccessMethod.Sequential), DeploymentItem("××××.UnitTest\\SumParameters.xml"), DeploymentItem("ConsoleApplication1.exe"), TestMethod()] 

DeploymentItem中指定了xml檔案的路徑,如果改變了xml的路徑,也要在這裡做相當的更改。

下面我們改一下測試方法的代碼:

        /// <summary>           ///A test for Sum           ///</summary>           [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\SumParameters.xml", "", DataAccessMethod.Sequential), DeploymentItem("Microsoft.SeoTools.UnitTest\\SumParameters.xml"), DeploymentItem("ConsoleApplication1.exe"), TestMethod()]           public void SumTest()           {               int x = int.Parse(TestContext.DataRow["x"].ToString());               int y = int.Parse(TestContext.DataRow["y"].ToString());               int expected = int.Parse(TestContext.DataRow["expect"].ToString());               int actual = Program_Accessor.Sum(x, y);               Assert.AreEqual(expected, actual);           } 

我們可以用TestContext.DataRow去訪問測試資料中的欄位。

在xml中我們的測試資料有三條,在run這個測試方法時,unit test會依次擷取這三條記錄並運行。我們的代碼中只用寫一次,挺帥的,哈哈

關於unit test的一些介紹,可以參見

http://msdn.microsoft.com/en-us/library/ms379625(VS.80).aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.