1.創(chuàng)建測試項目
在創(chuàng)建測試項目之前,我們還需要有一份待測試的代碼,下面的是我準備的一小段代碼。
namespace BigMan.UnitTest { public class Program { public static int Add(int a, int b) { return a + b; } public static int Div(int a, int b) { return a / b; } static void Main(string[] args) { } } }
創(chuàng)建測試項目有兩種方法,一種是在代碼窗口中右鍵點擊鼠標,選擇【創(chuàng)建單元測試】。
點擊之后,會彈出下面的【創(chuàng)建單元測試】的對話框,選中要進行單元測試的方法,再選擇對應(yīng)的輸出項目,如果解決方案中已經(jīng)存在測試項目,則在【輸出項目】的下拉框里會默認選中這個項目,沒有則需要選擇新建測試項目。點擊【確定】就可以完成測試項目的創(chuàng)建了。
需要說明的是,在Visual tudio 2010中,代碼窗口的右鍵菜單里是默認有【創(chuàng)建單元測試】這項的,但在Visual Studio 2012里卻消失了,需要大家手動把它調(diào)出來,具體方法可以參考http://www.jb51.net/softjc/83751.html
還有一種方法是在解決方案資源管理器里,通過右鍵新增測試項目 ,和新增其他項目是一樣的,最后選擇項目的時候選擇單元測試項目就可以了。只是這樣建好項目后,針對各個方法的測試代碼就全都需要手動去寫了,當然也可以按照上面的方法去讓Visual Studio自動生成,只要在【創(chuàng)建單元測試】的窗口中選擇剛剛新建的測試項目作為【輸出項目】就行了。
2.維護測試代碼
using BigMan.UnitTest; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; namespace UnitTestProject1 { /// <summary> ///這是 ProgramTest 的測試類,旨在 ///包含所有 ProgramTest 單元測試 ///</summary> [TestClass()] public class ProgramTest { private TestContext testContextInstance; /// <summary> ///獲取或設(shè)置測試上下文,上下文提供 ///有關(guān)當前測試運行及其功能的信息。 ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #region 附加測試特性 #endregion /// <summary> ///Div 的測試 ///</summary> [TestMethod()] public void DivTest() { int a = 1; // TODO: 初始化為適當?shù)闹? int b = 1; // TODO: 初始化為適當?shù)闹? int expected = 1; // TODO: 初始化為適當?shù)闹? int actual; actual = Program.Div(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("驗證此測試方法的正確性。"); } /// <summary> ///Add 的測試 ///</summary> [TestMethod()] public void AddTest() { int a = 1; // TODO: 初始化為適當?shù)闹? int b = 1; // TODO: 初始化為適當?shù)闹? int expected = 2; // TODO: 初始化為適當?shù)闹? int actual; actual = Program.Add(a, b); Assert.AreEqual(expected, actual); //Assert.Inconclusive("驗證此測試方法的正確性。"); } } }
簡單介紹一下測試代碼,首先是使用了TestClass特性來標識這個類中包含測試方法。然后是TestContext屬性,這個屬性用于在測試中提供上下文信息,實際使用過程中會有多種用途,在后面我會在用到時在詳細介紹,本文的測試過程中并沒有用到這個屬性?!靖郊訙y試特性】中的代碼因為暫時用不到而且會顯得代碼太過冗長,所以被我刪掉了,里面的內(nèi)容我們也會在后面陸續(xù)的接觸到。最下面的兩個方法則是針對我們代碼中的Add()和Div()產(chǎn)生的兩個測試方法。與測試類一樣,測試方法也有個特性來標識--【TestMethod()】。
以方法
AddTest()為例,來看一下測試方法的基本結(jié)構(gòu)。第一步,對a, b, expected聲明并進行了初始化,它們分別對應(yīng)了Add(int,int)方法的兩個參數(shù)以及期望的返回值;聲明actual,并調(diào)用Add方法將實際結(jié)果賦值給它。經(jīng)過這兩步,數(shù)據(jù)就準備完成了,最后是對測試結(jié)果進行判斷,稱之為(Assert)斷言。本例中使用了
Assert.AreEqual(
)
,初次之外,Assert還有一系列的斷言方法,如AreNotEqual,IsNull,IsNotNull,IsInstanceOfType等等,不在此一一列舉了,大家可以在Visual Studio中通過代碼的智能提示學習一下,或者干脆看一下MSDN的文檔。最后一行的Assert.Inconclusive("驗證此測試方法的正確性。");可以注釋掉,否則會在運行測試時會跳過這個測試方法,并提示 "驗證此測試方法的正確性"。我們修改一下測試方法中的參數(shù)a和b,以及期望結(jié)果的值,然后運行測試方法。
3.運行測試并查看測試結(jié)果
運行測試的方法也有多種,既可以通過代碼窗口中鼠標右鍵的菜單中選擇【運行測試】,也可以通過菜單欄中的【測試】-【運行】-【所有測試】來運行測試,Visual Studio 2010 中還可以直接點擊工具欄上的按鈕來執(zhí)行,但是在Viual Studio 2012中默認好像也消失了,應(yīng)該還是需要手動來設(shè)置。
最后測試的結(jié)果會如圖所示,顯示的信息包括執(zhí)行的測試,運行時間,未通過的測試還會給出相應(yīng)的失敗信息,以供跟蹤解決問題。修改代碼,保存后再點擊全部運行,或者選擇只運行失敗的測試,來測試修改的結(jié)果,直到測試全部通過。
到此為止,一個最基本的,而且不夠完善的單元測試就算完成了,下一篇將繼續(xù)來完善對這兩個方法的測試。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享題目:使用VisualStudio進行單元測試-創(chuàng)新互聯(lián)
URL地址:http://sd-ha.com/article42/jjgec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、標簽優(yōu)化、靜態(tài)網(wǎng)站、手機網(wǎng)站建設(shè)、網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容