天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

nunit使用指南之―NUnit Quick Start

NUnit 是為 .NET 框架生成的開(kāi)放源代碼單元測(cè)試框架。NUnit 使您可以用您喜歡的語(yǔ)言編寫(xiě)測(cè)試,從而測(cè)試應(yīng)用程序的特定功能。當(dāng)您首次編寫(xiě)代碼時(shí),單元測(cè)試是一種測(cè)試代碼功能的很好方法,它還提供了一種對(duì)應(yīng)用程序進(jìn)行回歸測(cè)試的方法。NUnit 應(yīng)用程序提供了一個(gè)用于編寫(xiě)單元測(cè)試的框架,以及一個(gè)運(yùn)行這些測(cè)試和查看結(jié)果的圖形界面。
  下載地址:http://sourceforge.NET/projects/nunitaddin
  本事例所用版本:http://www.cnblogs.com/Files/young18/nunit2.3.rar

NUnit Quick Start

原文檔:http://www.nunit.org
翻 譯:Young.J
說(shuō) 明:該實(shí)例是最早期的nunit版本中找到,在測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)中它并不是一個(gè)很好的例子,但它能闡明使用nunit的最基本方法。

   現(xiàn)在開(kāi)始我們的例子。假設(shè)我們開(kāi)始寫(xiě)一個(gè)銀行業(yè)的應(yīng)用程序,我們有一個(gè)基類―Account,Account主要負(fù)責(zé)資金的增加,撤銷和轉(zhuǎn)帳,下面是該類的代碼

 1namespace bank
 2{
 3    public class Account
 4    {
 5        private float balance;
 6        public void Deposit(float amount)
 7        {
 8              balance+=amount;    
 9        }

10
11        public void Withdraw(float amount)
12        {       
13              balance-=amount;     
14        }

15
16        public void TransferFunds(Account destination, float amount)
17        {     }
18
19        public float Balance
20        {       
21              getreturn balance;}     
22        }

23    }

24}
    在我們來(lái)寫(xiě)一個(gè)需要測(cè)試的類―AccountTest,我們第一個(gè)測(cè)試的方法是TransferFunds  1namespace bank
 2{
 3    using NUnit.Framework;
 4
 5    [TestFixture]
 6    public class AccountTest
 7    {
 8        [Test]
 9        public void TransferFunds()
10        {
11            Account source = new Account();
12            source.Deposit(200.00F);
13            Account destination = new Account();
14            destination.Deposit(150.00F);
15            source.TransferFunds(destination, 100.00F);
16            Assert.AreEqual(250.00F, destination.Balance);
17            Assert.AreEqual(100.00F, source.Balance);
18        }

19    }

20}
   現(xiàn)在做的第一件事是聲明這個(gè)類有一個(gè)[TestFixture]屬性,通過(guò)這種方法顯示這個(gè)類包含測(cè)試代碼(此屬性可以被繼承),這個(gè)類必須是public類且其派生內(nèi)沒(méi)有限制,這個(gè)類當(dāng)然必須有一個(gè)默認(rèn)構(gòu)造函數(shù)。
   這個(gè)類僅有的一個(gè)方法―TransferFunds,有一個(gè)[Test]屬性,顯示他是一個(gè)測(cè)試方法,該方法返回void,沒(méi)有參數(shù),在這個(gè)方法里我們對(duì)測(cè)試對(duì)象作了必須的初始化,Assert類定義了一些方法的集合體,用它來(lái)檢測(cè)設(shè)置條件,在我們的例子中,我們用AreEqual方法確保后面兩個(gè)賬戶的轉(zhuǎn)帳都有一個(gè)正確的剩余資金(這些是一些重載方法,這個(gè)例子中用的版本包含下面幾個(gè)參數(shù),第一個(gè)參數(shù)是期望值,第二個(gè)參試是真實(shí)值),
  編譯運(yùn)行這個(gè)例子,假設(shè)你編譯你的代碼為bank.dll,運(yùn)行NUnit Gui,選擇File->Open menu item,載入剛才編譯過(guò)的dll文件,點(diǎn)擊run,我們可以看到測(cè)試條變成紅色―我們的測(cè)試失敗了,在“Errors and Failures”面板顯示一面信息:
       TransferFunds : expected <250> but was <150>
  這個(gè)現(xiàn)象是我們所期望的,測(cè)試失敗的原因是我們沒(méi)有實(shí)現(xiàn)TransferFunds方法,現(xiàn)在我們開(kāi)始讓它工作,修改你的TransferFunds方法如下: 1public void TransferFunds(Account destination, float amount)
2{
3    destination.Deposit(amount);
4    Withdraw(amount);
5}
  現(xiàn)在我們?cè)俅尉幾g代碼,并在GUI中運(yùn)行,我們何以看到測(cè)試條變綠!測(cè)試成功!
  我們?cè)黾右恍╁e(cuò)誤檢測(cè)在我們的Account代碼中,為balance設(shè)置一個(gè)最小值.依次來(lái)保護(hù)資金透支量 1private float minimumBalance = 10.00F;
2public float MinimumBalance
3{
4    getreturn minimumBalance;}
5}
  增加一個(gè)表明透支的異常; 1public class InsufficientFundsException : ApplicationException
2{
3}
  增加一個(gè)測(cè)試方法到AccountTest類中  1[Test]
 2[ExpectedException(typeof(InsufficientFundsException))]
 3public void TransferWithInsufficientFunds()
 4{
 5    Account source = new Account();
 6    source.Deposit(200.00F);
 7    Account destination = new Account();
 8    destination.Deposit(150.00F);
 9    source.TransferFunds(destination, 300.00F);
10}
  這個(gè)測(cè)試方法的[Test]屬性有一個(gè) [ExpectedException]屬性,這表明這段測(cè)試代碼期望得到某一類型的異常,如果這種異常沒(méi)有出現(xiàn)在執(zhí)行過(guò)程中,這車是失敗,現(xiàn)在編譯代碼,啟動(dòng)NUnit Gui,這是測(cè)試條變紅,提示錯(cuò)誤信息:
        TransferWithInsufficentFunds : InsufficientFundsException was expected
  讓我們重新配置Account的代碼,讓它拋出異常,按下面的實(shí)例修改TransferFunds方法. 1public void TransferFunds(Account destination, float amount)
2{
3    destination.Deposit(amount);
4    if(balance-amount < minimumBalance)
5        throw new InsufficientFundsException();
6    Withdraw(amount);
7}
  編譯,運(yùn)行測(cè)試-測(cè)試條變綠,成功了,但是,我們看看這個(gè)代碼,我們僅僅寫(xiě)了我們可以看到的轉(zhuǎn)帳操作中的錯(cuò)誤,現(xiàn)在讓我們來(lái)寫(xiě)一個(gè)測(cè)試來(lái)證實(shí)我們不確定的錯(cuò)誤,添加下面一個(gè)測(cè)試方法  1[Test]
 2public void TransferWithInsufficientFundsAtomicity()
 3{
 4    Account source = new Account();
 5    source.Deposit(200.00F);
 6    Account destination = new Account();
 7    destination.Deposit(150.00F);
 8    try
 9    {
10        source.TransferFunds(destination, 300.00F);
11    }

12    catch(InsufficientFundsException expected)
13    {
14    }

15    Assert.AreEqual(200.00F,source.Balance);
16    Assert.AreEqual(150.00F,destination.Balance);
17}
   編譯運(yùn)行―紅色測(cè)試條,我們算錯(cuò)了300元,代碼顯示正確的結(jié)果是150元,但賬戶顯示確是450,那么怎樣修補(bǔ)錯(cuò)誤,能不能加一段最小基金檢測(cè)在資金處理之前呢?我們可以在catch塊中加以一些修補(bǔ)方法,或依靠我們的管理人員修復(fù)對(duì)象的規(guī)定,我們需要在多方面回答這些問(wèn)題,但不是在現(xiàn)在,那在此期間我們可以怎么做呢?移出它?一個(gè)最好的方法是忽視它,添加以下屬性在你的測(cè)試方法中 1[Test]
2[Ignore("Decide how to implement transaction management")]
3public void TransferWithInsufficientFundsAtomicity()
4{
5    // code is the same
6}
   編譯測(cè)試代碼―黃色,點(diǎn)擊"Tests Not Run",我們可以看到bank.AccountTest.TransferWithInsufficientFundsAtomicity() 在被忽視的測(cè)試列表里。
  上面是一些常用簡(jiǎn)單方法,依次來(lái)講解nunit的使用過(guò)程,在以后的單元,我們會(huì)深入講解nunit的使用!

AspNet技術(shù)nunit使用指南之―NUnit Quick Start,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 刺激一区仑乱 | 99精品免费久久久久久久久蜜桃 | 青青草原影视 | 快播电影官方网站 | 久久综合中文字幕佐佐木希 | 日本亚洲欧洲免费旡码 | 国产乱人偷精品视频A人人澡 | 啦啦啦 中国 日本 高清 在线 | 国产亚洲精品视频亚洲香蕉视 | 国产精品久久久久婷婷五月色婷婷 | 永久久久免费人妻精品 | 亚洲一区二区三区乱码在线欧洲 | 成人在线观看免费视频 | 欧美一区二区高清 | 被黑人群jian又粗又大H | 国产女人喷潮视频免费 | 亚洲国产三级在线观看 | 久久精品美女 | 亚洲午夜性春猛交XXXX | 最近中文字幕完整版高清 | 日日摸夜夜添夜夜爽出水 | 男人桶爽女人 | 色橹橹欧美在线观看视频高清 | hd性欧美俱乐部中文 | 狠狠鲁 我喜欢 | 天美传媒麻豆精品 | 怡红院美国分院一区二区 | 久久88综合| 日本内射精品一区二区视频 | 久久久久久久国产精品视频 | 中文乱码35页在线观看 | 国产精品久久久久影院色 | 欧美一区二区在线观看 | 在线免费观看毛片 | 青青草原网址 | 99日影院在线播放 | 旧里番6080在线观看 | 国产AV精品久久久毛片 | 国产AV果冻传奇麻豆 | 抽插妇女疯狂视频 | 麻豆久久婷婷五月国产 |