使用Visual Studio 2013進行單元測試--初級篇

1.打開VS2013 --> 新建一個項目。這裏咱們默認建立一個控制檯項目。取名爲UnitTestDemo框架

2.在解決方案裏面新增一個單元測試項目。取名爲UnitTestDemoTest工具

建立完畢後項目結構大概以下:性能

 

3.進入控制檯項目UnitTestDemo的Program類,建立一個Add方法。單元測試

namespace UnitTestDemo
{
    class Program
    {
        static void Main(string[] args)
        {
        }

        public static int Add(int num1, int num2)
        {
            return num1 + num2;
        }
    }
}

 

4.咱們的目的就是測試上面的Add方法運行是否正常,返回結果是否正確。學習

5.在單元測試項目中引用控制檯項目,引用完畢後項目結構以下:測試

 

6.單元測試項目裏面UnitTest1這個類的名字取得太難看了,咱們把名字改成ProgramTest,代表這是在測試Program類。改完以下:spa

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestDemoTest
{
    [TestClass]
    public class ProgramTest
    {
        [TestMethod]
        public void TestMethod1()
        {
        }
    }
}

 

7.上面就是VS爲ProgramTest類默認生成的方法。能夠看到ProgramTest具備一個【TestClass】特性,代表這是一個測試類。TestMethod1具備一個【TestMethod】特性,代表這是一個測試方法。插件

 

8.能夠這樣理解,一個方法必須具備【TestMethod】特性,且其所屬的類具備【TestClass】特性,那麼這個方法纔會被VS認可爲一個【單元測試方法】。翻譯

若是沒有上面的兩個特性中的一個,編譯生成是沒有任何問題的。可是VS不會把其做爲一個【單元測試方法】。3d

 

9.「VS不把一個方法做爲【單元測試方法】」是什麼意思呢?

依次點擊VS的菜單欄【測試】--> 【窗口】-->【測試資源管理器】,能夠打開測試資源管理器。

 

 

10.測試資源管理器裏面會顯示當前解決方案裏面的全部單元測試。說明白點就是這裏只顯示符合【第8點】要求的方法。

你可能會說,爲何上面的圖裏面什麼都沒顯示,【TestMethod】特性和TestClass】特性如今不是都有嗎?

緣由是你尚未生成程序集。OK,按F6.就能夠看到【測試資源管理器】中顯示了【TestMethod1】:

 

11.咱們要清楚咱們建立單元測試的初衷:是用工具幫助咱們測試軟件的質量、穩定性、性能等等。【VS】在這裏就充當了工具的做用。

 

12.回到命名的問題,很明顯TestMethod這個名字太難看了,咱們把它改爲AddTest表示這是在測試Add方法。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestDemoTest
{
    [TestClass]
    public class ProgramTest
    {
        [TestMethod]
        public void AddTest()
        {
        }
    }
}

 

13.截止目前,咱們已經創建了一個能夠執行的測試框架,雖然沒有起到什麼做用,可是測試已經能夠執行了。

執行測試的方法之一是:右鍵點擊須要測試的【單元測試】方法的名稱,選擇運行:

 

運行測試以後,能夠在測試資源管理器中查看測試的結果:

 

執行單元測試的方法有不少,這些須要咱們在不斷的學習中去體會。

 

14.接下來咱們作一點有意義的事情。改進AddTest方法:

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestDemoTest
{
    [TestClass]
    public class ProgramTest
    {
        [TestMethod]
        public void AddTest()
        {
            int num1 = 100;
            int num2 = 200;

            Assert.AreEqual(Program.Add(num1, num2), 300);
        }
    }
}

 

在這以前,請把Program類的可見性改成internal或者Public。

​15.「Assert」以前沒接觸過單元測試的朋友,或者英語差點的可能不認識。上谷歌翻譯:

清楚的看到,「Assert」的意思是「斷言」。因此「Assert.AreEqual(Program.Add(num1, num2), 300);」這句話的意思就是:我斷言「Program.Add(num1, num2)」的結果就是300。

而斷言的正確與否只須要經過測試工具測試便可。若是測試經過說明此斷言是正確的,反之就說明這個測試失敗了。

斷言有不少種,包括上面普通的Assert,還有字符串斷言,集合斷言等等。

16.ok,運行測試能夠看到測試經過。

 

17.若是上面所說的你都明白,那麼到這裏爲止,你能夠本身編寫簡單的單元測試代碼並執行測試了。

最後還有一個要說的就是,若是你以爲手動編寫單元測試類和方法太麻煩,那麼能夠使用「Unit Test Generator」插件幫助你生成單元測試和方法。

這樣你能夠把重心偏到編寫測試邏輯上。

「Unit Test Generator」能夠經過VS菜單欄【工具】-->【擴展和更新】-->搜索「「Unit Test Generator」」取得。

 

18.安裝「Unit Test Generator」須要重啓VS。

在須要進行單元測試的類和方法上點擊右鍵,如圖操做(圖中演示的是生成單元測試方法)

 

 

點擊以後會彈出一個對話框,須要你配置一個名稱的規則,配置好後點擊ok便可生成測試方法。

19.最後但願你們養成隨時測試代碼的好習慣。

 

 

轉載聲明:歡迎轉載,但請保留原文連接。

友情連接:http://www.zhoumy.cn

相關文章
相關標籤/搜索