用NUnit為.NET程式做測試 ---Nunit入門
阿新 • • 發佈:2019-01-24
最近在學習的過程中感覺到專案測試的重要性,自己在網上學習了一番。感覺還是收穫頗豐的。在此記下,希望也能為像我這樣的程式設計師一點幫助吧。
接下來開始我們的開發和測試。我寫的是一個簡單的計算功能的類。
新增類 Calculate.cs 程式碼如下:
namespace NunitTest { public class Calculate { public int Add(int a,int b) { return a + b; } public intMinus(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
將NunitTest .dll新增進去。
我們可以看到我們新增的兩個測試方法。TestAdd和TestDivide。點選 Run 開始測試
全部變成綠色表示測試通過。
但是大家有沒有想到,測試的除法 TestDivide()有除數為零的情況。我們在程式中沒有做任何判斷,我們直接Return了結果。
我們更改一下測試類
[Test]
public void TestDivide()
{
Calculate cal = new Calculate();
int result = cal.Divide(3, 0);
Assert.AreEqual(3, result);
}
雖然我們這裡的運算很簡單,但是遇到複雜的情況這個測試就很有必要了。
[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,測試通過。