測試項目

Visual Studio 2010 單元測試共分七個部分:數據庫

普通單元測試、順序單元測試、壓力測試,Generic測試、數據庫測試、UI界面測試和Web性能測試。 小程序

Visual Studio 2010 單元測試之一---普通單元測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175362.aspxapp

 

Visual Studio 2010 單元測試之二---順序單元測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175472.aspxide

 

Visual Studio 2010 單元測試之三---壓力測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175477.aspx函數

 

Visual Studio 2010 單元測試之四---Generic測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175485.aspx性能

 

Visual Studio 2010 單元測試之五---數據庫測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175491.aspx單元測試

 

Visual Studio 2010 單元測試之六---UI界面測試:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175499.aspx測試

     本文以Visual Studio 2010爲例,來介紹如何在Visual Studio裏面進行單元測試.this

     首先來介紹普通單元測試,這是進行順序測試、壓力測試的基礎。若是在Visual Studio 2010(2008)裏面沒有發現下圖中的Test菜單,請用Visual Studio安裝光盤進行安裝,由於Visual Studio單元測試插件安裝時可能不是默認選項。spa

1.JPG

 

測試以前,咱們要準備一些測試代碼。或者從下面的連接下載完整的項目工程。

http://download.csdn.net/source/3014236

新建一個名爲AppSample的Lib。裏面有一個MathUtility文件,包含加減乘除四個方法。代碼以下:

namespace TJVictor.UT.AppSample

{

    public class MathUtility

    {

        public MathUtility() { }

 

        public static int Add(int a, int b)

        {

            return a + b;

        }

 

        public static int Minus(int a, int b)

        {

            return a - b;

        }

 

        public static int Divide(int a, int b)

        {

            return a / b;

        }

 

        public static int Multiply(int a, int b)

        {

            return a * b;

        }

    }

}

 

建立單元測試項目有兩種方法:

1.直接建立單元測試項目:File->New->Project->Test Project. 以下圖:

2.JPG

 

2. 直接在須要建立單元測試的函數上建立:右擊函數名->Create Unit Tests。 以下圖

3.JPG

 

         這樣就建立好了單元測試項目。Visual Studio 會自動生成一個單元測試工程。推薦使用第二種方法建立,由於第一種方法建立的只有單元測試工程,第二種方法會把單元測試函數也一塊兒建立了出來。

 

本文以第二種建立的方式爲例,繼續下一步,講解單元測試文件。

建立好的單元測試工程以下圖:

4.JPG

其中MathUtilityTest.cs就是自動生成的單元測試文件,打開能夠看到相似以下代碼。

        [TestMethod()]

        public void AddTest()

        {

            int a = 0; // TODO: Initialize to an appropriate value

            int b = 0; // TODO: Initialize to an appropriate value

            int expected = 0; // TODO: Initialize to an appropriate value

            int actual;

            actual = MathUtility.Add(a, b);

            Assert.AreEqual(expected, actual);

            Assert.Inconclusive("Verify the correctness of this test method.");

        }

 

關於單元測試的各類斷言,不在本文討論範圍以內。下表列出Visual Studio 2010支持的斷言及相關解釋。

斷言

解釋

AreEqual

驗證值相等

AreNotEqual

驗證值不相等

AreSame

驗證引用相等

AreNotSame

驗證引用不相等

Inconclusive

暗示條件還未被驗證

IsTrue

驗證條件爲真

IsFalse

驗證條件爲假

IsInstanceOfType

驗證明例匹配類型

IsNotInstanceOfType

驗證明例不匹配類型

IsNotNull

驗證條件爲NULL

IsNull

驗證條件不爲NULL

Fail

驗證失敗

 

測試函數AddTest()的屬性[TestMethod()]表示這個方法是個可運行單元測試方法,區別類中的其餘方法(如一些測試輔助方法)。

須要特別注意的是:Assert.Inconclusive("Verify the correctness of this test method.");語句是默認添加的,意思是這個方法是Visual Studio自動建立,運行前自刪除或註釋此句,不然運行結果沒法經過。

按上面的步驟,把MathUtility裏面的全部方法都創建相應的單元測試,而後按F6進行編譯。編譯後,就能夠在單元測試窗口中看到咱們剛剛創建的測試方法了。

Test->Windows->Test List Editor以下圖:

5.JPG

 

修改DivideTest代碼以下:

        [TestMethod()]

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 2; // TODO: Initialize to an appropriate value

            int expected = 50; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

在Test List Editor選中DivideTest方法後,右擊以下圖

6.JPG

 

1.Run Checked Tests:直接運行此單元測試函數

2.Debug Checked Tests:以Debug模式運行。在此模式下運行單元測試函數,能夠在單元測試函數(DivideTest)或是被測函數(MathUtility.Divide)中加斷點,則程序會自動停留在斷點處。

3.Open Test:打開此測試函數的方法,至關於雙擊。

4.Disable:把此測試方法置爲無效。

 

 

左擊Run Checked Tests後,運行結果以下圖,證實測試經過:

7.JPG

從新修改DivideTest()程序以下:

        [TestMethod()]

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 2; // TODO: Initialize to an appropriate value

            int expected = 60; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

再次運行,結果以下:

8.JPG

測試失敗,緣由是:期待值爲60,實際值爲50,斷言失敗。

 

從新修改DivideTest()程序以下:

        public void DivideTest()

        {

            int a = 100; // TODO: Initialize to an appropriate value

            int b = 0; // TODO: Initialize to an appropriate value

            int expected = 60; // TODO: Initialize to an appropriate value

            int actual;

           

            actual = MathUtility.Divide(a, b);

            Assert.AreEqual(expected, actual);

            //Assert.Inconclusive("Verify the correctness of this test method.");

        }

此次以Debug模式運行,則程序會在return a / b;拋出異常,顯示被除數不能爲0.

 

至此,一個簡單的單元測試已經從頭至尾跑了一遍。細心的讀者必定會發如今MathUtilityTest.cs測試文件裏面還有四個被註釋掉的方法,下表列出了這四個方法的解釋和用法。

函數名

用法

[ClassInitialize()]

MyClassInitialize

這個方法會在每次調用測試方法前被自動調用。假設在調用AddTest(),DivideTest()等方法以前都須要初始化一些基本數據列表,則這個工做能夠放在MyClassInitialize函數裏面,不用分別寫在每一個測試方法裏。

[ClassCleanup()]

MyClassCleanup

這個方法會在每次調用測試方法結束後被自動調用。

[TestInitialize()]

MyTestInitialize

這個方法會在每次啓動一個測試過程前被自動調用。例如本次測試一共選擇了AddTest(),DivideTest()兩個測試方法,則在調用這兩個方法前,MyTestInitialize會先被調用。與MyClassInitialize不一樣的是,MyClassInitialize是每次調用測試方法時都會被調用,至關於函數級的調用,MyTestInitialize則只在測試過程前會被調用一次,在測試過程結束前,不會再被調用,至關於過程級的調用。

[TestCleanup()]

MyTestCleanup

這個方法會在每次結束一個測試過程後被自動調用。

 

Visual Studio 之所謂把這四個函數註釋掉,緣由是這四個函數只是示意性函數(從名字中就能夠看出)。關鍵是看這四個函數的方法屬性[ClassInitialize()],[ClassCleanup()], [TestInitialize()], [TestCleanup()]只要把相關的屬性加到相關的方法上,那麼這個方法就具備的上面所描述的功能。

 

單元測試適用範圍:

1.驗證函數正確性。對於一個函數,只要咱們把相關的測試數據都寫全,而後run一下,就知道是否都能經過。之後修改此方法後,只要再次run一下,就知道這次修改是否影響到了之前的測試用例,大大節省時間和提升正確率。

2.Debug程序。咱們通常寫後臺代碼時,都要寫一個console或是winform小程序要調試驗證所寫的類是否能run起來,那麼單元測試中的Debug模式就能夠勝任此工做。

 

 

下面介紹兩個使用時的小技巧。

1.能夠在Test Result窗口裏面導出測試結果。導出的結果包括一份測試報告和測試程序。證實此程序已經經過了報告中的全部測試用例,至關於Release了一個版本。

2.設置測試數量。每運行一次測試過程,就會生成一次測試報告和程序。Visual Studio默認次數是25,即超過25後,就會提示超出測試數次。咱們能夠經過下面的設置來提升次數。

Tool->Options->Test Tools->Test Execution,把裏面的25改爲100便可。以下圖

9.JPG

至此,普通單元測試已經完成。請繼續關注順序單元測試。

相關文章
相關標籤/搜索