1. 程式人生 > >用NUnit為.NET程式做測試 ---Nunit入門

用NUnit為.NET程式做測試 ---Nunit入門

最近在學習的過程中感覺到專案測試的重要性,自己在網上學習了一番。感覺還是收穫頗豐的。在此記下,希望也能為像我這樣的程式設計師一點幫助吧。

接下來開始我們的開發和測試。我寫的是一個簡單的計算功能的類。

首先在VS中新建一個類庫。1

新增類 Calculate.cs  程式碼如下:

namespace NunitTest
{
    public class Calculate
    {
        public int Add(int a,int b)
        {
            return a + b;
        }

        public int 
Minus(int a,int b) { return a - b; } public int Multiply(int a,int b) { return a * b; } public int Divide(int a,int b) { return a / b; } } }
Calculate 就是我們要測試的類了。
在專案中新增測試類 CalculateTest.cs 。首先新增 NUnit.Framework.dll到專案中,
由於安裝NUnit時,安裝程式已經將NUnit的程式集新增到了專案的.net應用中,直接點選新增。
使用NUnit測試專案,必須新增客戶端屬性標示,新增[TestFixture] 以表明此類是用來測試使用的。
    [TestFixture]
    public class CalculateTest
    {

    }
接下來新增測試方法:新增[Test]以表明此方法是用來測試使用的。測試方法不能有返回值,不能有引數。
    [TestFixture]
    public class CalculateTest
    {
        [Test]
        public
void TestAdd() { Calculate cal = new Calculate(); int result = cal.Add(1, 4); Assert.AreEqual(5, result); } [Test] public void TestDivide() { Calculate cal = new Calculate(); int result = cal.Divide(3, 1); Assert.AreEqual(3, result); } }

Assert 即測試的 “斷言”:在測試框架中,斷言是單元測試的核心,我們在測試中要對其程式斷言,如果某個斷言失敗,方法的呼叫不會返回值,並且會報告一個錯誤。如果一個測試包含多個斷言,那些緊跟失敗斷言的那些斷言都不會執行,因此每個測試方法最好只有一個斷言。

啟動 NUnit,FILE----Open Project

3

NunitTest .dll新增進去。

4 

我們可以看到我們新增的兩個測試方法。TestAdd和TestDivide。點選 Run 開始測試

5

全部變成綠色表示測試通過。

但是大家有沒有想到,測試的除法 TestDivide()有除數為零的情況。我們在程式中沒有做任何判斷,我們直接Return了結果。

我們更改一下測試類

        [Test]
        public void TestDivide()
        {
            Calculate cal = new Calculate();

            int result = cal.Divide(3, 0);

            Assert.AreEqual(3, result);
        }

執行 NUnit,6

雖然我們這裡的運算很簡單,但是遇到複雜的情況這個測試就很有必要了。

        [Test]
        [ExpectedException(typeof(DivideByZeroException))]
        public void TestDivide()
        {
            Calculate cal = new Calculate();

            int result = cal.Divide(3, 0);

            Assert.AreEqual(3, result);
        }
[ExpectedException(typeof(DivideByZeroException))] 表示這個測試類我期望丟擲一個除數不能為零的異常。
再次執行 NUnit,測試通過。