單元測試基礎知識
單元測試是開發(fā)者編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用于判斷某個特定條件(或者場景)下某個特定函數(shù)的行為。例如,你可能把一個很大的值放入一個有序list 中去,然后確認該值出現(xiàn)在list 的尾部。或者,你可能會從字符串中刪除匹配某種模式的字符,然后確認字符串確實不再包含這些字符了。
執(zhí)行單元測試,是為了證明某段代碼的行為確實和開發(fā)者所期望的一致。
當編寫項目的時刻,如果我們假設底層的代碼是正確無誤的,那么先是高層代碼中使用了底層代碼;然后這些高層代碼又被更高層的代碼所使用,如此往復。當基本的底層代碼不再可靠時,那么必需的改動無法只局限在底層。雖然你可以修正底層的問題,但是這些對底層代碼的修改必然會影響到高層代碼。于是,一個對底層代碼的修正,可能會導致對幾乎所有代碼的一連串改動,從而使修改越來越多,也越來越復雜。從而使整個項目也以失敗告終。
而單元測試的核心內涵:這個簡單有效的技術是為了令代碼變得更加完美。
NUnit介紹
NUnit 是一個免費開源的產(chǎn)品,它提供了一套測試框架和一個測試運行程序(test runner)。
注意:test tunner 知道如何尋找具有 [TestFixture] 屬性的類和類中的 [Test] 方法。
如何安裝 NUnit
在官網(wǎng)下載NUnit,當前新的版是2.4.8,我下的是NUnit-2.4.8-net-2.0.zip。
NUnit第一個演示
我們用Visual Studio 2008新建一個NUnit項目:
為了便于演示,我們把默認的Program.cs改成Calculator.cs,在Calculator類里,我們實現(xiàn)簡單的加減乘除四個方法。完整代碼如下:
using System;
namespace NUnitTest
{
public class Calculator
{
/// <summary>
/// 加法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int Add(int a,int b)
{
return a + b;
}
/// <summary>
/// 減法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int Minus(int a, int b)
{
return a - b;
}
/// <summary>
/// 乘法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int Multiply(int a, int b)
{
return a * b;
}
/// <summary>
/// 除法
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public int Divide(int a, int b)
{
return a / b;
}
static void Main(string[] args)
{
Calculator cal = new Calculator();
int result = cal.Add(2,3);
Console.WriteLine(result);
Console.ReadKey(true);
}
}
}
如果沒有單元測試,我們普通的測試方法像是Main方法一樣,這樣的測試是一個很邪惡的測試方法,花時間且很難得到我們想要的結果。