您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > Nunit
使用NUnit對(duì)業(yè)務(wù)邏輯代碼進(jìn)行單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/24 10:39:52 ] 推薦標(biāo)簽:

  Nunit是xUnit系列中應(yīng)用于C#的測(cè)試框架,類似JUnit,Gtest等測(cè)試框架?蓪(duì)類,接口的業(yè)務(wù)邏輯進(jìn)行單元測(cè)試,目前如果不會(huì)單元測(cè)試的開發(fā)人員太不專業(yè)了。

  場(chǎng)景:

  1、當(dāng)編寫網(wǎng)站代碼時(shí),寫了獨(dú)立的查詢類庫,但是這個(gè)類庫的邏輯如何進(jìn)行測(cè)試呢,比較慢的方式是人工點(diǎn)擊鼠標(biāo),通過網(wǎng)頁進(jìn)行測(cè)試。但是這樣的效率實(shí)在太低了,特別是在出現(xiàn)問題時(shí),還得不停的修改代碼-》運(yùn)行-》點(diǎn)擊頁面。如此反復(fù),很浪費(fèi)開發(fā)者的時(shí)間,特別是改了一些邏輯還得反復(fù)測(cè),代碼相當(dāng)不可靠。

  2、如果有單元測(cè)試的話,可以利用已經(jīng)寫好的測(cè)試案例進(jìn)行回歸測(cè)試。比如你寫好一些邊界條件的測(cè)試數(shù)據(jù),改了代碼只需要重新跑一次單元測(cè)試行了。

  3、好處已經(jīng)足夠多了。。如果用熟了,效率提高的不是一點(diǎn)半點(diǎn)。如果覺得時(shí)間寶貴的同學(xué)建議用上單元測(cè)試吧。

  4、雖然VS2010也自帶了微軟的測(cè)試框架,但是我不建議使用,因?yàn)檫@些都是對(duì)IDE耦合太高了,換了IDE可能整個(gè)測(cè)試用例都用不了。

  步驟1:

  下載Nunit

  http://www.nunit.org/,下載zip包,建議使用綠色版本的zip,好處是不要污染電腦的注冊(cè)表等。

  解壓之后放在:

  E:softwareNUnit-2.6.2

  把E:softwareNUnit-2.6.2in添加到用戶的環(huán)境變量path,這樣可以直接通過命令行運(yùn)行可執(zhí)行文件.nunit-console.exe

  通過命令行運(yùn)行的好處是可以加入持續(xù)集成,也是自動(dòng)化測(cè)試,對(duì)代碼持續(xù)構(gòu)建和持續(xù)測(cè)試,還有是可以通過ide直接調(diào)用exe。

  步驟2:

  新建類庫QX_Users.編寫類庫文件QueryHelper.cs,我這里改了使用.net frameworkd 2.0,生成QX_Users.dll庫。


using System;
using System.Collections.Generic;
using System.Text;

namespace QxsLogic
{
    public class QueryHelper
    {
       public List<String> QueryUsers(String userId)
        {
            String sql = "select name from users";
            Console.WriteLine(sql);
            List<String> lists = new List<string>();
            lists.Add("infoworld");
            lists.Add("英雄");
            lists.Add(userId);
            return lists;
        }
    }
}
 


  步驟3:

  在QX_Users目錄下的新建tests目錄,這樣可以直接方便維護(hù)測(cè)試代碼和項(xiàng)目代碼了,建議使用這種項(xiàng)目結(jié)構(gòu),多增加一個(gè)tests目錄。

  步驟4:新建項(xiàng)目Test_QX_Users和測(cè)試代碼TestQueryHelper.cs,建議使用這種命令,很直觀知道測(cè)試的是哪個(gè)類。

  直接通過瀏覽方式添加對(duì)NUnit目錄下的nunit.framework.dll的引用。生成Test_QX_Users.dll庫。


using System;
using System.Collections.Generic;
using System.Text;
using QxsLogic;

namespace Test_QX_Users
{
    using NUnit.Framework;
  
    [TestFixture]
    public class TestQueryHelper
    {
        [Test]
        public void TestQueryUsers()
        {
            QueryHelper query = new QueryHelper();
            String id = "hero";
            List<String> lists = query.QueryUsers(id);
            foreach (String name in lists)
            {
                Console.WriteLine(name);
            }
            Assert.Greater(lists.Count,0);
            Assert.AreEqual(id,lists[lists.Count-1]);
            Console.WriteLine("finish Test");
        }
    }
}

上一頁12下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd