在Visual Studio2015中使用單元測試

來源:互聯網
上載者:User

標籤:soft   microsoft   tcl   pcl   targe   replace   empty   可靠性   函數   

所謂的單元測試(Unit Test),就是對軟體的一些模組進行測試以檢查其正確性和可靠性,這些模組可以是一個類或者是一個方法等。在Visual studio中,這十分容易實現。

開啟Visual studio,檔案->建立->項目,在此示範的是為通用Windows平台建立單元測試,因此展開Visual C#->Windows->通用->單元測試應用(通用Windows)。,

 

 

 

這裡單元測試的項目名為UnitTest4Demo

建立完成後,為了使條理清晰,我們在解決方案中建立一個類庫(ClassLibrary),將要測試的方法放在類庫中,而UnitTest4Demo調用放在類庫中的待測試方法。

右擊解決方案->添加->建立項目->類庫(通用Windows),

 

 

 

類庫取名為ClassLibrary4Test

建立完成後,解決方案管理器裡應類似

 

 

 

剛剛已經說了,類庫裡面放待測試方法,UnitTest4Demo負責調用並測試類別庫中的方法,因此UnitTest4Demo應引用ClassLibrary4Test。右擊UnitTest4Demo下的引用->添加引用->勾選ClassLibrary4Test,

 

 

 

確定後,UnitTest4Demo下的引用應類似,注意:紅線的部分就是剛剛添加的對類庫的引用

 

 

 

現在,在類庫ClassLirary4Test中的Class1.cs中寫個方法,簡單起見,就讓這個方法返回個0

 

1   public class Class12    {3         public static int ReturnZero()4         {5             return 0;6         }7     }

 

 

接著,在UnitTest4Demo中UnitTest.cs中的TestMethod1方法中調用此函數,

 

 

 

在這個UnitTest1類中,第一點,我們注意到UnitTest1被添加了TestClass屬性類,方法TestMethod1被添加了TestMethod屬性類,這就是用來單元測試的類和函數與一般的類和函數不同之處,這就告訴了Visual Studio我這個函數是用來測試的,Visual Studio就會將這個帶有TestClass屬性的類下的,帶有TestMethod屬性的方法放到測試資源管理員中(測試資源管理員展開方法:功能表列->測試->視窗->測試資源管理員)

第二點就是這個函數裡面就寫了一句話,Assert是用於單元測試“斷言”的類,即我輸入一些參數(當然此樣本沒有輸入參數),如果方法運行正確我“斷言”應得到的結果,如果不符,Visula studio在測試後會給出相關的資訊,這就達到了測試的效果。當然這個類有很多的重載,參見MSDN:Assert類

 

 

 

我們會注意到,此時測試資源管理員空空如也,並沒有TestMehod1方法,這是我們沒有產生解決方案的原因,現在產生解決方案:功能表列->產生->產生解決方案

產生之後,測試資源管理員中會出現TestMehod1方法,

 

 

 

下面執行測試,右擊測試單元管理器中的TestMethod1->運行選定的測試

稍等片刻,將會出現通過測試。

至此,一個簡單的單元測試完成了。

你可以在單元測試中測試更多,更複雜的方法,下面就展示一個稍微複雜一些的用於測試跨平台 app的網路通訊的樣本。

在ClassLibrary4Test類庫中建立一個HttpHelper類,類中寫個用於Get請求的方法。

 

 1    public class HttpHelper 2     { 3         /// <summary> 4         /// Send Get request and retrieve the response as a string 5         /// </summary> 6         /// <param name="url">url</param> 7         /// <returns>response</returns> 8         public static async Task<string> SendGetRequest(string url) 9         {10             HttpClient httpClient = new HttpClient();11             Uri uri = new Uri(url);12             HttpResponseMessage response = new HttpResponseMessage();13             string httpResonseBody = string.Empty;14             try15             {16                 response = await httpClient.GetAsync(uri);17                 response.EnsureSuccessStatusCode();18                 httpResonseBody = await response.Content.ReadAsStringAsync();19             }20             catch21             { }22             return httpResonseBody;23         }24     }

 

 

在UnitTest4Demo的UnitTest.cs中新寫個方法TestMothod_Http,調用剛寫的SendGetRequest方法。

 

1     [TestMethod]2         public async Task TestMethod_Http()3         {4             string url = "http://mywebapidemo.azurewebsites.net/api/Default";5             string response = await HttpHelper.SendGetRequest(url);6             Assert.AreEqual("Hello,World!", response.Replace("\"", ""));7 8         }

 

產生解決方案,和剛剛一樣,測試資源管理員中在產生後悔出現TestMethod_Http,測試之,可以順利通過測試。

在Visual Studio2015中使用單元測試

聯繫我們

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