程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [C#]_[使用NUnit對業務邏輯代碼進行單元測試]

[C#]_[使用NUnit對業務邏輯代碼進行單元測試]

編輯:C#入門知識

Nunit是xUnit系列中應用於C#的測試框架,類似JUnit,Gtest等測試框架。可對類,接口的業務邏輯進行單元測試,目前如果不會單元測試的開發人員就太不專業了。   場景:   1.當編寫網站代碼時,寫了獨立的查詢類庫,但是這個類庫的邏輯如何進行測試呢,比較慢的方式就是人工點擊鼠標,通過網頁進行測試。但是這樣的效率實在太低了,特別是在出現問題時,還得不停的修改代碼-》運行-》點擊頁面。如此反復,很浪費開發者的時間,特別是改了一些邏輯還得反復測,代碼相當不可靠。   2.如果有單元測試的話,就可以利用已經寫好的測試案例進行回歸測試。比如你寫好一些邊界條件的測試數據,改了代碼只需要重新跑一次單元測試就行了。   3.好處已經足夠多了。。如果用熟了,效率提高的不是一點半點。如果覺得時間寶貴的同學建議用上單元測試吧。   4.雖然VS2010也自帶了微軟的測試框架,但是我不建議使用,因為這些都是對IDE耦合太高了,換了IDE可能整個測試用例都用不了。     步驟1:   下載Nunit   http://www.nunit.org/,下載zip包,建議使用綠色版本的zip,好處就是不要污染電腦的注冊表等。   解壓之後放在:   E:\software\NUnit-2.6.2\   把E:\software\NUnit-2.6.2\bin添加到用戶的環境變量path,這樣可以直接通過命令行運行可執行文件.nunit-console.exe   通過命令行運行的好處就是可以加入持續集成,也就是自動化測試,對代碼持續構建和持續測試,還有就是可以通過ide直接調用exe.     步驟2:   新建類庫QX_Users.編寫類庫文件QueryHelper.cs,我這裡改了使用.net frameworkd 2.0,生成QX_Users.dll庫。   [csharp] view plaincopy using System;   using System.Collections.Generic;   using System.Text;      namespace QxsLogic   {       public class QueryHelper       {          public List<String> QueryUsers(String userId)            {               String sql = "select name from users";               Console.WriteLine(sql);               List<String> lists = new List<string>();               lists.Add("infoworld");               lists.Add("英雄");               lists.Add(userId);               return lists;           }       }   }     步驟3: 在QX_Users目錄下的新建tests目錄,這樣可以直接方便維護測試代碼和項目代碼了,建議使用這種項目結構,多增加一個tests目錄.       步驟4:新建項目Test_QX_Users和測試代碼TestQueryHelper.cs,建議使用這種命令,很直觀知道測試的是哪個類。   直接通過浏覽方式添加對NUnit目錄下的nunit.framework.dll的引用。生成Test_QX_Users.dll庫。 [csharp]   using System;   using System.Collections.Generic;   using System.Text;   using QxsLogic;      namespace Test_QX_Users   {       using NUnit.Framework;              [TestFixture]       public class TestQueryHelper       {           [Test]           public void TestQueryUsers()           {               QueryHelper query = new QueryHelper();               String id = "hero";               List<String> lists = query.QueryUsers(id);               foreach (String name in lists)               {                   Console.WriteLine(name);               }               Assert.Greater(lists.Count,0);               Assert.AreEqual(id,lists[lists.Count-1]);               Console.WriteLine("finish Test");           }       }   }     步驟5:在Test_QX_Users項目錄下新建一個批處理(這個位置可以不污染測試代碼),命名nunit-test.bat,建議使用這種命名,可以知道使用哪個測試框架: [plain]   nunit-console Test_QX_Users\bin\Debug\Test_QX_Users.dll     步驟6:運行批處理nunit-test.bat,Nunit默認會在當前運行目錄輸出一個TestResult.xml測試報告,用在持續集成裡再好不過了。 [plain]   C:\Users\apple\Documents\Visual Studio 2010\Projects\ClassLibrary1\ClassLibrary1   \tests\Test_QX_Users>nunit-test.bat      C:\Users\apple\Documents\Visual Studio 2010\Projects\ClassLibrary1\ClassLibrary1   \tests\Test_QX_Users>nunit-console Test_QX_Users\bin\Debug\Test_QX_Users.dll   NUnit-Console version 2.6.2.12296   Copyright (C) 2002-2012 Charlie Poole.   Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.   Copyright (C) 2000-2002 Philip Craig.   All Rights Reserved.      Runtime Environment -      OS Version: Microsoft Windows NT 6.1.7601 Service Pack 1     CLR Version: 2.0.50727.5466 ( Net 3.5 )      ProcessModel: Default    DomainUsage: Single   Execution Runtime: net-3.5   .select name from users   infoworld   英雄   hero   finish Test      Tests run: 1, Errors: 0, Failures: 0, Inconclusive: 0, Time: 0.1430082 seconds     Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved