用NUnit2.1簡單實現.net的測試驅動開發(TDD)
發表于:2007-06-30來源:作者:點擊數:
標簽:
用NUnit2.1簡單實現.net的 測試驅動開發 ( TD D) 下面的例子很簡單,就是實現兩個整數的四則運算, TDD 提倡測試優先,即先寫 測試用例 ,再寫運行代碼,剛下了個NUnit2.1,迫不及待的試了試…… 1最初的測試用例 using System; using NUnit.Framework; nam
用NUnit2.1簡單實現.net的
測試驅動開發(
TDD)
下面的例子很簡單,就是實現兩個整數的四則運算,
TDD提倡測試優先,即先寫
測試用例,再寫運行代碼,剛下了個NUnit2.1,迫不及待的試了試……
1最初的測試用例
using System;
using NUnit.Framework;
namespace netshop
{
/// <summary>
/// 四則運算TestCls測試用例
/// Edit by spgoal
/// </summary>
[TestFixture]
public class
TestCase
{
public TestCase()
{
}
private TestCls tc;
[SetUp]
public void setup()
{
tc=new TestCls();
}
[Test]
public void testAdd()
{
Assert.AreEqual(10,tc.Add(5,5));
Assert.AreEqual(7,tc.Add(3,4));
}
[Test]
public void testSub()
{
Assert.AreEqual(1,tc.Sub(5,4));
}
[Test]
public void testMul()
{
Assert.AreEqual(10,tc.Mul(2,5));
}
[Test]
public void testDiv()
{
Assert.AreEqual(2,tc.Div(10,5));
}
}
}
2 編譯這個測試用例,理所當然的是通不過的,因為TestCls類未建立,于是建立該類,不必多說,看代碼:
using System;
namespace netshop
{
/// <summary>
/// 四則運算的簡單例子
/// </summary>
public class TestCls
{
public TestCls()
{
}
//加法
public int Add(int a,int b)
{
return 0;
}
//減法
public int Sub(int a,int b)
{
return 0;
}
//乘法
public int Mul(int a,int b)
{
return 0;
}
//除法
public double Div(int a,int b)
{
return 0;
}
}
}
這時編譯通過,但由于里面的方法沒實現,所以所有測試用例都失敗。
(加載測試用例的方法是:先運行Nunit-Gui V2.1程序,然后在菜單file—open—選擇測試用例所在工程目錄的bin目錄下的dll文件。)
3 于是編寫加減乘除四個函數的實現:
using System;
namespace netshop
{
/// <summary>
/// 四則運算的簡單例子
/// </summary>
public class TestCls
{
public TestCls()
{
}
//加法
public int Add(int a,int b)
{
return a+b;
}
//減法
public int Sub(int a,int b)
{
return a-b;
}
//乘法
public int Mul(int a,int b)
{
return a*b;
}
//除法
public double Div(int a,int b)
{
return a/b;
}
}
}
這時測試通過了!
4 尋找令測試失敗的測試用例
想想似乎漏了一些可以使程序出錯的測試用例,想到了吧?就是除數為零的情況,于是修改testDiv測試用例
[Test]
public void testDiv()
{
Assert.AreEqual(2,tc.Div(10,5));
Assert.AreEqual(0,tc.Div(10,0));//除于0的情況
}
果然,運行Nunit,出錯了^_^ (這人有問題,出錯了還笑-_-b)
于是修改TestCls類代碼
//除法
public double Div(int a,int b)
{
if(b!=0)
{
return a/b;
}
else
{
return 0;
}
}
編譯后,再運行Nunit,全部通過!
5 總結
這只是一個簡單例子,因為以前用JUnit覺得還挺好用,于是想試試.net的Nunit是否好用,果然也不差:)測試優先只是測試驅動開發的一部分內容,還有重構等步驟,所以本文的題目有些名不副實,請大家多多包涵。
6 相關資料
NUnit
下載地址: http://www.nunit.org/files/nunit-v21/Nunit-V2.1.4.msi
相關中文文章有:
[1]NUnit Cookbook(.net
單元測試工具) http://www.csdn.net/develop/Read_Article.asp?Id=14908
[2] 在.NET環境中使用
單元測試工具NUnit http://www.csdn.net/develop/Read_Article.asp?Id=22482
[3] NUnit快速入門 http://www.csdn.net/develop/Read_Article.asp?Id=23530
http://www.csdn.net/develop/Read_Article.asp?Id=23531
[4] NUnit 在VS.NET 2003上的插件 http://www.csdn.net/develop/Read_Article.asp?Id=26568
原文轉自:http://www.kjueaiud.com