使用VS2013進行C#程式的單元測試

來源:互聯網
上載者:User

標籤:real   ram   菜單   單元   執行   完成   需要   示範   bar   

沒有按照預期的那樣做出成功的單元測試,磕磕絆絆參照了下面兩篇部落格大致做出來了,所以很有必要記錄一下過程。

http://www.cnblogs.com/duasonir/p/5299732.html(照著這個我成功的做出了單元測試)

http://www.cnblogs.com/Look_Sun/p/4514732.html(這個我幾乎研究了一天,但是最後還是沒有做出來,最後看到上面那位同學的參考的內容和這篇一樣,拜讀之後也作出了半成品)

由於程式都是簡單加法,而且我自己的思想並沒有加入其中,項目名以及有些類名就不做改變了,一些術語不夠精確還望指正。

一、C#控制台程式的單元測試(使用“Unit Test Generator”外掛程式產生單元測試和方法)

“Unit Test Generator”可以通過VS功能表列:工具->擴充和更新-->搜尋““Unit Test Generator””取得,我的已經下載好了,沒有提示下載,安裝完成後後需要重啟VS。

安裝好之後就可以進行單元測試了,這個單元測試主要參照前者的部落格成功做出單元測試。

1.開啟vs2013:檔案->建立->項目(單擊),然後看到如下介面

點擊確定後如:

2.編寫代碼,產生一個新的類,編寫建構函式 與 add()函數。代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace UnitTestDemo 8 { 9     class Program10     {11         static void Main(string[] args)12         {13         }14     }15     public class test16     {17         public test()18         {19 20         }21         public int add(int a, int b)22         {23             return a + b;24         }25     }26 }

3.在代碼空白處右鍵,點擊Unit Test Generator,預設選項確定。

之後介面如所示:

4.在testTest()函數裡編寫測試代碼,代碼如下。

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using UnitTestDemo; 7 using Microsoft.VisualStudio.TestTools.UnitTesting; 8 namespace UnitTestDemo.Tests 9 {10     [TestClass()]11     public class testTests12     {13         [TestMethod()]14         public void testTest()15         {16             int a = 1, b = 2, expect = 3;17             test t = new test();18             int real = t.add(a, b);19 20             Assert.AreEqual(real, expect);21             //Assert.Fail();22         }23     }24 }

5.在代碼空白處右鍵,點擊 運行測試(T),運行結果將自動彈出,如所示:

開啟測試資源管理員:依次點擊VS2013的功能表列:測試-> 視窗->測試資源管理員。

如果給出的期望值錯誤的話,測試就不會通過,如:

下面給出一張測試不通過,並且給出實際值與期望值分別是多少的圖片。來源:http://www.cnblogs.com/libaoquan/p/5296384.html

以上為最成功的一次的單元測試,除了測試錯誤的時候沒有提示實際值與期望值。(我儘力了)

二、C#控制台程式的單元測試(手動編寫單元測試類和方法)

主要參照部落格:http://www.cnblogs.com/Look_Sun/p/4514732.html

1.同上面的  一.1;

2.在解決方案處右鍵->添加->建立項目。

新增一個單元測試項目。取名為UnitTestDemoTest。如:

3.進入控制台項目UnitTestDemo的Program類,建立一個Add方法(目的就是測試這個Add方法運行是否正常,返回結果是否正確)。這裡把Add方法寫到寫到Program類裡面了,上面的那個單元測試是產生一個新的類test,編寫建構函式 與 add()函數。

代碼如下:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace UnitTestDemo 8 { 9     class Program10     {11         static void Main(string[] args)12         {13         }14 15         public static int Add(int num1, int num2)16         {17             return num1 + num2;18         }19     }20     21 }

4.在單元測試項目UnitTestDemoTest中引用控制台項目UnitTestDemo(在“引用”處右鍵“添加引用”),之後介面如下:

引用完畢後項目結構如下:

下面就是VS為UnitTest1類預設產生的方法。可以看到UnitTest1具有一個【TestClass】特性,表明這是一個測試類別。TestMethod1具有一個【TestMethod】特性,表明這是一個測試方法。

一個方法必須具有【TestMethod】特性,且其所屬的類具有【TestClass】特性,那麼這個方法才會被VS承認為一個【單元測試方法】。

如果沒有上面的兩個特性中的一個,編譯產生是沒有任何問題的。但是VS不會把其作為一個【單元測試方法】。

 1 using System; 2 using Microsoft.VisualStudio.TestTools.UnitTesting; 3  4 namespace UnitTestDemoTest 5 { 6     [TestClass] 7     public class UnitTest1 8     { 9         [TestMethod]10         public void TestMethod1()11         {12         }13     }14 }

5.截止目前,已經建立了一個可以執行的測試架構,雖然沒有起到什麼作用,但是測試已經可以執行了(直接點擊測試資源管理員裡面的全部運行即可)。測試結果如:

6.在單元測試的測試方法裡面添加測試函數,代碼如下:

 1 using System; 2 using Microsoft.VisualStudio.TestTools.UnitTesting; 3 using UnitTestDemo; 4  5 namespace UnitTestDemoTest 6 { 7     [TestClass] 8     public class UnitTest1 9     {10         [TestMethod]11         public void TestMethod1()12         {13             int num1 = 100;14             int num2 = 200;15 16             Assert.AreEqual(Program.Add(num1, num2), 300);17         }18     }19 }

注意:一定要在函數裡面引用需要測試的項目,我就是沒有引用才引有錯誤(對於啥都不懂的我就允許我這不專業的說明吧)。這裡引用之後,把Program類的可見度改為internal或者public。

只在資源管理員裡面引用裡面添加引用的話會出現下面的錯誤(我就是被下面的錯誤整蒙了,沒點基礎真苦逼,連添加標頭檔都不造- -!):

7.代碼測試如(測試通過和不通過的介面):

測試不通過時也沒有提示期望值和實際值。o(╯□╰)o

三、其實課上吳小勇同學給我們示範了C++的單元測試。

http://www.cnblogs.com/xiaoyongwu/p/5289964.html

一開始我照著吳小勇同學的部落格,準備寫一個C++的單元測試。一直出現錯誤後就寫了C#的單元測試。

主要是手忙腳亂之際,度娘讓我看到希望了,感覺很詳細,就參考著進行單元測試了。

http://www.cnblogs.com/Look_Sun/p/4514732.html

後來一直出錯,請教了班級助教後已經能測試通過了但還是不知道問題出在哪裡,迷茫的時候又發現下面這篇部落格,最後才順利寫出這個半成品單元測試。

http://www.cnblogs.com/duasonir/p/5299732.html

後期再添加一個C++的單元測試。ing...

使用VS2013進行C#程式的單元測試(轉)

聯繫我們

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