用NUnit2.1簡單實現.net的測試驅動開發(TDD)
2024-07-10 12:57:52
供稿:網友
 
用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
注冊會員,創建你的web開發資料庫,