1. 程式人生 > >DotNet開發工具系列之一Nunit

DotNet開發工具系列之一Nunit

經常在網上看到大家都有提到過NUNIT這個單元測試工具.覺得這個工具功能很強.但苦於介紹這方面入門的資料太少omg_smile.gif,只是把它裡面的一個列子貼出來,剛開始用的時候摸不著頭腦.我在這裡把我的學習過程共享一下,希望對想學習這方面知識的同仁有所幫助.
先是找到這個軟體安裝,這個大家都會哦,去Google上找就可以了.
開啟VS開發環境.
新建一個類.這裡我還以大家通常講到的售火車票為例:
把 NUnit.Framework檔案引用進來.
 using System;
 using NUnit.Framework;
 

 namespace NunitTest
 {
  /// <summary>
  /// Ticket 的摘要描述。
  /// </summary>
  public class Ticket
  {
   private int _amount;

   public Ticket()
   {
    //
    // TODO: 在此加入建構函式的程式碼
    //
   }

   public int Amount
   {
    get {return _amount;}   
   }

   public void sell()
   {
    if (_amount-1 < 0)
     throw new Exception("NO");
    _amount -=1;
   }
  
   public void add(int num)
   {
    _amount +=num;

   }
  }
}
上面是一個有關售火車票的類.
有兩個方法,一個是ADD.一個是SELL.這兩個方法的作用分別是ADD為加入火車票.SELL為出售火車票.
在呼叫ADD的時候我們要讓它的數量增加.在出售的時候要讓火車票減少.
在這裡我們的邏輯就體現出來了.
但是現在我們要知道它是不是每作一次操作真的是正確呢,如果不是測試類的話我們就要新建一個例項去驗證它,這無形中就增加了我們的工作量.
於是我們想到用NUNIT這個單元測試工具來測試它是否正確.
現在我們來寫一個測試類來驗證:
[TestFixture]
  public class TicketTest
  {
   public TicketTest()
   {
    
   }

   private Ticket t;

   [TestFixtureSetUp]

   public void initt()
   {
    t = new Ticket();
    t.add(3);
   }

   [Test]
   public void add()
   {
    Assert.AreEqual(3,t.Amount);
   }

   [Ignore("Ignore this void")]
   public void sell()
   {
    t.sell();
    Assert.AreEqual(0,t.Amount);
   }
       
   [Test]
   [ExpectedException(typeof(Exception))]
   public void ExcpetionTesting()
   {
    t.sell();
    t.sell();
    t.sell();
    t.sell();
    Assert.AreEqual(0,t.Amount);
   }
  }
編譯後就可以進行測試了,
開啟NUNIT介面如下:


通過File選單開啟剛剛編譯的那個DLL檔案.按下RUN就可以看到如下結果了.

綠色就表是能過了,如果是紅色就表示這個類寫得有問題.大家可以改動一些東東然後測試看是否正確.
歡迎大家扔磚頭,希望對那些想開始用這個東東的兄弟有所幫助
[TestFixture]
這個屬性表是這個類是一個測試類.也就是說如果我們要測試某一個類的話,就在這個類的上面加這個屬性.這個屬性是要引用了NUnit.Framework才有的.
[Test]
表示這個方法是一個測試方法.
[Ignore("Ignore this void")]
表示忽略這個方法,不對它進行測試
 [TestFixtureSetUp]
表示在開始測試這個類的時候就執行這個方法.也可以說是進行一些類的初始化工作
 [TestFixtureTearDown]
表示在測試結束的時候執行這個方法.可以做一些資源釋放的操作.
[SetUp]
表示在每個測試方法開始之前都執行這個方法
[TearDown]
表示在每個測試方法結束的時候都執行這個方法.
[Test]
   [ExpectedException(typeof(Exception))]
這兩個屬性一起使用就是測試是否有正常的異常觸發.
以上講的是幾個NUNIT的幾個屬性.這些都是放在要測試或是要執行的方法之前的.
用得較多的方法就是Assert.AreEqual這是用來比較兩個物件或值是否相等.
還有一些其它的方法,在這裡先講這幾個東東,
歡迎大家一起討論
下面是這個測試類的全部原始碼
 using System;
 using NUnit.Framework;
 

 namespace NunitTest
 {
  /// <summary>
  /// Ticket 的摘要描述。
  /// </summary>
  public class Ticket
  {
   private int _amount;

   public Ticket()
   {
    //
    // TODO: 在此加入建構函式的程式碼
    //
   }

   public int Amount
   {
    get {return _amount;}   
   }

   public void sell()
   {
    if (_amount-1 < 0)
     throw new Exception("NO");
    _amount -=1;
   }
  
   public void add(int num)
   {
    _amount +=num;

   }
  }
  
  [TestFixture]
  public class TicketTest
  {
   public TicketTest()
   {
    
   }

   public Ticket t;

   [TestFixtureSetUp]

   public void initt()
   {
    t = new Ticket();
    t.add(3);
   }

   [Test]
   public void add()
   {
    Assert.AreEqual(3,t.Amount);
   }

   [Ignore("Ignore this void")]
   public void sell()
   {
    t.sell();
    Assert.AreEqual(0,t.Amount);
   }
       
   [Test]
   [ExpectedException(typeof(Exception))]
   public void ExcpetionTesting()
   {
    t.sell();
    t.sell();
    t.sell();
    t.sell();
    Assert.AreEqual(0,t.Amount);
   }
  }
 }

相關推薦

DotNet開發工具系列之一Nunit

經常在網上看到大家都有提到過NUNIT這個單元測試工具.覺得這個工具功能很強.但苦於介紹這方面入門的資料太少,只是把它裡面的一個列子貼出來,剛開始用的時候摸不著頭腦.我在這裡把我的學習過程共享一下,希望對想學習這方面知識的同仁有所幫助.先是找到這個軟體安裝,這個大家都會哦,去

前端開發工具系列

Node.js Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。 Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。 Node.js 的包管理器 npm,是全球最大的開源庫生態系統。 一言以蔽之,node就是一個jav

開發工具系列(一):Btrace——線上Debug工具

Btrace Btrace用於除錯正在執行的系統,並且在除錯時不會暫停系統。特別適用於跟蹤線上問題。你可以實時監控一個系統中任何一個方法的呼叫,你可以知道這些方法的引數、返回值是什麼,還可以知道方法呼叫消耗了多少時間。 Btrace不需要安裝,只要下載一個包,解壓即可。

推薦開發工具系列之--Clover(檔案瀏覽器)

雖然我不是刻意要噴Windows自帶的檔案瀏覽器;但是為了突出讚美要推薦的Clover這款軟體;只能委屈微軟了; 重點要強調clover的兩個特點;當然;除了這兩個特點;也沒啥圈點的了; 下載連結:http://pan.baidu.com/s/1mgqzuv2 1:書籤

企慧Q5快速開發平臺系列之一:表單生成

企慧Q5快速開發平臺,以下簡稱Q5,真正實現了“快速”二字!本系列開篇介紹Q5的表單生成功能,注意是表單“生成”而非“設計”,這是Q5和其他平臺的典型差異。舉個例子,先看如下表單:銷售訂單 包含訂單表頭,訂單(合同)明細,按鈕包括 稽核,稽核日誌,儲存,儲

Java程序員必須知道的幾種系列輔助開發工具

java 教程 集成開發環境Eclipse是最有名也最廣泛使用的Java集成開發環境(IDE),允許開發者結合語言支持和其他功能到任何的默認包中,而且Eclipse市場有許多定制和擴展的插件。IntelliJ已經引起了開發者的“追捧”,甚至比Eclipse還受寵,有免費版和專業版。IntelliJ為眾

SuperMap iObject入門開發系列之一組件式GIS開發平臺介紹

href 並且 lan 分享圖片 易用 分享 之一 應用 TP 本文是一位好友“煬煬”授權給我來發表的,介紹都是他的研究成果,在此,非常感謝。平臺介紹:SuperMap iObjects Java/.NET 是面向GIS應用系統開發者的組件式GIS開

Python爬蟲開發系列之一開發IDE安裝

開發 size 環境配置 技術 keyword -s www 版本 是不是 中國有句古話說:工欲善其事,必先利其器! 在我最開始學 Python 的時候,因為沒有去探索好用的工具,吃了很多苦頭。磕磕絆絆走過來之後才知道,好的工具給效率帶來的提升不是從 1 到 1.1 倍速

Java EE入門教程系列第一章Java EE的概述(二)——Java EE技術框架和開發工具

1.3Java EE的技術框架 從技術的角度劃分,完整的Java EE分成了4個部分:元件技術、服務技術、通訊技術和架構技術。 下面給出的是一個適合初學者的體系結構簡化圖,暫時接觸不到的部分統一用“支援技術”表示,我們暫時只專注於與應用級開發相關的技術即可。 1.元件技術 這是

大資料調錯系列之hadoop在開發工具控制檯上打印不出日誌的解決方法

(1)在windows環境上配置HADOOP_HOME環境變數 (2)在eclipse上執行程式 (3)注意:如果eclipse打印不出日誌,在控制檯上只顯示 1.log4j:WARN No appenders could be found 

大數據調錯系列之hadoop在開發工具控制臺上打印不出日誌的解決方法

ase 解決 sys ali out 視頻資料 .sh initial clip (1)在windows環境上配置HADOOP_HOME環境變量 (2)在eclipse上運行程序 (3)註意:如果eclipse打印不出日誌,在控制臺上只顯示 1.log4j:WARN No

安卓入門系列-01開發工具Android Studio的安裝

谷歌在早幾年就關閉了第三方支援,現在官方主推的開發工具就是Android Studio,所以我的安卓開發也是從as開始的。 1.下載IDE 像安卓這類開發,它不同於其他的程式設計開發,一個好的工具是必須的。Android Studio經過幾年的逐步發展,如今已經是比較好用

Maven小坑:IDEA開發工具中對於maven專案進行mvn install報錯的解決辦法之一(前提不是程式碼錯誤)

今天公司前輩給了我一個專案,要我熟悉熟悉,以後會在這裡面進行開發;在我使用Iidea自帶的控制檯進行mvn install命令的時候,發先mvn install失敗(這裡的報錯可能會有多種,就是因為在install的時候沒有找到資源,不一一舉例了); 經過一番程式碼以及包的檢查,發現沒有錯誤

IOS開發教程系列之第2集 開發工具Xcode

2018年11月07日 17:19:24 碼子哥 閱讀數:4 標籤: ios ios開發 xc

1.優雅安裝MySQL以及安裝失敗解決方案&開發工具安裝系列之MySQL

優雅安裝MySQL以及安裝失敗解決方案 1.開啟下載的mysql安裝檔案mysql-5.5.15-win32.msi,雙擊執行,出現如下介面 2.mysql安裝嚮導啟動,按Next繼續 3.按Next繼續 4.選擇安裝型別,有Typical(預設)、Co

測試驅動開發系列之一--嵌入式TDD基礎知識

測試驅動的嵌入式C語言開發的名言名句 以動手實踐為榮,以只看不練為恥。 以列印日誌為榮,以單步跟蹤為恥。 以空格縮排為榮,以製表縮排為恥。 以單元測試為榮,以人工測試為恥。 以模組複用為榮,以複製貼上為恥。 以多型應用為榮,以分支判斷為恥。 以pythonic為榮,以冗餘拖

敏捷開發一千零一問系列之一:序言及解決問題的心法(無我)

這是敏捷開發一千零一問系列的第一篇。(在這裡提問,之一,之二,之三,問題總目錄)也是般若敏捷系列第十篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二)做敏捷開發時間長了,就感覺很多事情都理所當然,越發覺得“問題很可貴”,最近做培訓的時候收集了一

Android 開發神器系列工具篇)之 Android WiFi ADB

               做為一個多年奮戰在Android 應用開發一線的程式設計師來說,程式除錯的苦是不言而喻的,在過去的很長一段時間裡,我們如果要除錯Android 應用只能通過USB資料線,一頭連著手機,一頭聯著電腦,不敢讓手機離開電腦半步。 、         

小程式自學系列(零基礎學小程式)---實現底部導航欄和頂部導航欄及微信開發工具常用快捷鍵

基本實現功能 1,底部3個tab實現選中時文字和圖片改變 2,實現頁面資料的初始化和點選button時改變資料的簡單互動 3,實現日子的列印 先看效果圖 今天是我自學微信小程式的第一天,這些程式

javaweb開發過程中小工具系列之帶事務的QueryRunner

        DBUtils簡化了對資料庫的操作,再加上我們上一節講的JdbcUtils,兩者配合起來用,也是非常方便,但是操作在操作事務時,也會產生一些冗餘的程式碼。程式碼示例如下: Jdbcutils package cn.ccnu.jdbc; import j