Nunit是xUnit系列中應用于C#的測試框架,類似JUnit,Gtest等測試框架。可對類,接口的業(yè)務邏輯進行單元測試,目前如果不會單元測試的開發(fā)人員太不專業(yè)了。
場景:
1、當編寫網(wǎng)站代碼時,寫了獨立的查詢類庫,但是這個類庫的邏輯如何進行測試呢,比較慢的方式是人工點擊鼠標,通過網(wǎng)頁進行測試。但是這樣的效率實在太低了,特別是在出現(xiàn)問題時,還得不停的修改代碼-》運行-》點擊頁面。如此反復,很浪費開發(fā)者的時間,特別是改了一些邏輯還得反復測,代碼相當不可靠。
2、如果有單元測試的話,可以利用已經(jīng)寫好的測試案例進行回歸測試。比如你寫好一些邊界條件的測試數(shù)據(jù),改了代碼只需要重新跑一次單元測試行了。
3、好處已經(jīng)足夠多了。。如果用熟了,效率提高的不是一點半點。如果覺得時間寶貴的同學建議用上單元測試吧。
4、雖然VS2010也自帶了微軟的測試框架,但是我不建議使用,因為這些都是對IDE耦合太高了,換了IDE可能整個測試用例都用不了。
步驟1:
下載Nunit
http://www.nunit.org/,下載zip包,建議使用綠色版本的zip,好處是不要污染電腦的注冊表等。
解壓之后放在:
E:softwareNUnit-2.6.2
把E:softwareNUnit-2.6.2in添加到用戶的環(huán)境變量path,這樣可以直接通過命令行運行可執(zhí)行文件.nunit-console.exe
通過命令行運行的好處是可以加入持續(xù)集成,也是自動化測試,對代碼持續(xù)構建和持續(xù)測試,還有是可以通過ide直接調用exe。
步驟2:
新建類庫QX_Users.編寫類庫文件QueryHelper.cs,我這里改了使用.net frameworkd 2.0,生成QX_Users.dll庫。
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庫。
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");
}
}
}