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

來源:互聯網
上載者:User

標籤:

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類。改完如下:

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不會把其作為一個【單元測試方法】。

 

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”之前沒接觸過單元測試的朋友,或者英語差點的可能不認識。上Google翻譯:

清楚的看到,“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.最後希望大家養成隨時測試代碼的好習慣。

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.