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

nunit使用指南之―NUnit Quick Start

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

NUnit Quick Start

原文檔:http://www.nunit.org
翻 譯:Young.J
說 明:該實例是最早期的nunit版本中找到,在測試驅動的開發中它并不是一個很好的例子,但它能闡明使用nunit的最基本方法。

   現在開始我們的例子。假設我們開始寫一個銀行業的應用程序,我們有一個基類―Account,Account主要負責資金的增加,撤銷和轉帳,下面是該類的代碼

 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}
    在我們來寫一個需要測試的類―AccountTest,我們第一個測試的方法是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}
   現在做的第一件事是聲明這個類有一個[TestFixture]屬性,通過這種方法顯示這個類包含測試代碼(此屬性可以被繼承),這個類必須是public類且其派生內沒有限制,這個類當然必須有一個默認構造函數。
   這個類僅有的一個方法―TransferFunds,有一個[Test]屬性,顯示他是一個測試方法,該方法返回void,沒有參數,在這個方法里我們對測試對象作了必須的初始化,Assert類定義了一些方法的集合體,用它來檢測設置條件,在我們的例子中,我們用AreEqual方法確保后面兩個賬戶的轉帳都有一個正確的剩余資金(這些是一些重載方法,這個例子中用的版本包含下面幾個參數,第一個參數是期望值,第二個參試是真實值),
  編譯運行這個例子,假設你編譯你的代碼為bank.dll,運行NUnit Gui,選擇File->Open menu item,載入剛才編譯過的dll文件,點擊run,我們可以看到測試條變成紅色―我們的測試失敗了,在“Errors and Failures”面板顯示一面信息:
       TransferFunds : expected <250> but was <150>
  這個現象是我們所期望的,測試失敗的原因是我們沒有實現TransferFunds方法,現在我們開始讓它工作,修改你的TransferFunds方法如下: 1public void TransferFunds(Account destination, float amount)
2{
3    destination.Deposit(amount);
4    Withdraw(amount);
5}
  現在我們再次編譯代碼,并在GUI中運行,我們何以看到測試條變綠!測試成功!
  我們增加一些錯誤檢測在我們的Account代碼中,為balance設置一個最小值.依次來保護資金透支量 1private float minimumBalance = 10.00F;
2public float MinimumBalance
3{
4    getreturn minimumBalance;}
5}
  增加一個表明透支的異常; 1public class InsufficientFundsException : ApplicationException
2{
3}
  增加一個測試方法到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}
  這個測試方法的[Test]屬性有一個 [ExpectedException]屬性,這表明這段測試代碼期望得到某一類型的異常,如果這種異常沒有出現在執行過程中,這車是失敗,現在編譯代碼,啟動NUnit Gui,這是測試條變紅,提示錯誤信息:
        TransferWithInsufficentFunds : InsufficientFundsException was expected
  讓我們重新配置Account的代碼,讓它拋出異常,按下面的實例修改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}
  編譯,運行測試-測試條變綠,成功了,但是,我們看看這個代碼,我們僅僅寫了我們可以看到的轉帳操作中的錯誤,現在讓我們來寫一個測試來證實我們不確定的錯誤,添加下面一個測試方法  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}
   編譯運行―紅色測試條,我們算錯了300元,代碼顯示正確的結果是150元,但賬戶顯示確是450,那么怎樣修補錯誤,能不能加一段最小基金檢測在資金處理之前呢?我們可以在catch塊中加以一些修補方法,或依靠我們的管理人員修復對象的規定,我們需要在多方面回答這些問題,但不是在現在,那在此期間我們可以怎么做呢?移出它?一個最好的方法是忽視它,添加以下屬性在你的測試方法中 1[Test]
2[Ignore("Decide how to implement transaction management")]
3public void TransferWithInsufficientFundsAtomicity()
4{
5    // code is the same
6}
   編譯測試代碼―黃色,點擊"Tests Not Run",我們可以看到bank.AccountTest.TransferWithInsufficientFundsAtomicity() 在被忽視的測試列表里。
  上面是一些常用簡單方法,依次來講解nunit的使用過程,在以后的單元,我們會深入講解nunit的使用!

AspNet技術nunit使用指南之―NUnit Quick Start,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲精品免费视频 | 99手机在线视频 | 澳大利亚剧满足在线观看 | 国产高潮国产高潮久久久久久 | 狠狠久久免费视频在线 | 色 花 堂 永久 网站 | 青草精品国产福利在线视频 | 办公室日本肉丝OL在线 | 嘟嘟嘟在线视频免费观看高清中文 | 伦理片天堂eeuss影院 | 三级全黄的视频在线观看 | 欧美成人无码A区在线观看免费 | 添加一点爱与你电视剧免费观看 | 伊人久综合 | 在线亚洲色拍偷拍在线视频 | 久久是热频国产在线 | 日韩欧美中文字幕在线二视频 | 熟女强奷系列中文字幕 | 黑人巨茎大战白人女40CMO | 久久精品国产亚洲AV久五月天 | 白丝女仆被强扒内裤 | 国产婷婷午夜精品无码A片 国产婷婷色综合AV蜜臀AV | 久久青草免费91线频观看站街 | 国产成人免费片在线观看 | 国精产品一区一区三区有限 | 中文日韩亚洲欧美字幕 | 欧美日韩一区不卡在线观看 | 久久香蕉国产线看观看精品 | 97超视频在线观看 | 亚洲AV福利天堂一区二区三 | 人妻激情综合久久久久蜜桃 | 毛片免费在线播放 | 内射白浆一区二区在线观看 | 诱人的秘书BD在线观看 | 国产毛片AV久久久久精品 | 在线精品一卡乱码免费 | 国产成人一区二区三区在线观看 | 被两根巨大同时进去高H | 超碰免费视频caopoom9 | 精品久久久爽爽久久久AV | 免费毛片播放 |