• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用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

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>