Nunit測試工具使用實例

来源:http://www.cnblogs.com/yankun1991/archive/2017/07/18/7199850.html
-Advertisement-
Play Games

前言: 本文主要是介紹了Nunit的基本使用,其中參詳了很多已有的文章,由於最近要使用其進行測試,所以對網上的文章做了下整理,同時加入了一些自己的實踐。 NUnit的屬性 TestFixture 它標記一個類包含測試,申明該類是用來測試的。一般用在class的定義之前; Test 一般是放在meth ...


前言:

  本文主要是介紹了Nunit的基本使用,其中參詳了很多已有的文章,由於最近要使用其進行測試,所以對網上的文章做了下整理,同時加入了一些自己的實踐。

NUnit的屬性

 

TestFixture

它標記一個類包含測試,申明該類是用來測試的。一般用在class的定義之前;

                       

Test

         一般是放在method之前,表示對該方法的測試,中添加Description參數可以給我們測試的功能添加描述信息

    

 

TestCase(arguments)

    屬性標記有參數無返值方法為測試方法(泛型方法一樣標記),想要多次測試可用逗號隔開([TestCase(1,2), TestCase(2,3)])

TestCaseAttribute還提供一些列其他屬性:

    Description:描述測試用例詳情

    ExpectedException:指定期望拋出的異常

    ExpectedExceptionName:指定期望拋出異常的全名

    ExpectedMessage:指定期望拋出異常的信息

    Explict:設置為true標記測試用例為顯示執行,用Reason來詮釋緣由

    Ignore:設置為true用於指定忽略測試用例,用Reason來詮釋緣由

    IgnoreReason:指定忽略測試用例及緣由,等同於同時使用Ignore && Reason。註意:本特性會在以後版本中移除

    MatchType:MessageMatch枚舉類型,指定測試期望信息(詳情見ExpectedExceptionAttribute

    Reason:指定不執行測試用例的緣由,結合Ignore或Explicit特性使用

    Result:指定測試方法期望的返回值,返回值類型必須是可相容的

    TestName:為測試用例指定一個名稱,如果不指定會根據測試方法及參數自動生成。

 

Explicit

   屬性標記測試方法需要在UI界面顯式執行,如果不想對某個方法進行單元測試,只是在它被選中時才進行測試的話,可以調用該特性。

 

Ignore

    屬性標記一個測試方法或一個測試類被忽略,如果測試類被忽略,其內中的測試方法也會被忽略。

 

ExpectedException(Type)

屬性標記測試方法在運行時拋出一個期望的異常,如果是則測試通過,否則不通過

 

Category("")

屬性標記用於將測試分類(便於只測試需要的類別),可在方法與類上進行標記,在NUnit-GUI界面的Categories選項卡中對要參與參數的類別進行選擇,Run時僅測試該類別的測試。如果均不選,則預設全部測試

 

TestFixtureSetUp

屬性標記方法為類級別設置(初始化)方法,在整個測試類中執行一次初始化,所有的測試方法共用初始化數據,標記此屬性的方法可以簡單的將其想象為一個初始化器,就行類的構造函數一樣

TestFixtureTearDown

屬性標記方法為類級別拆卸方法,在整個測試類中執行一次拆卸.當測試類中的所有測試方法執行完成,就會執行拆卸方法,用於清除數據、釋放資源,可以將其想象為一個析夠函數,在測試完成後對測試過程中使用的資源進行回收

TearDown

屬性標記方法為函數級別的拆卸方法,在執行完每個測試方法後,執行該拆卸方法。一個測試類可以僅有一個TearDown/Setup/TestFixtureSetUp/TestFixtureTearDown方法。如果有多個定義,測試類也會編譯成功,但是測試時不會運行這些標記過的方法

SetUp

屬性標記方法為函數級別的設置方法,在執行每個測試方法前,執行該設置方法

 

[Maxtime]/[Timeout]

屬性標記測試用例的最大執行時間,前者超時時不取消測試,而後者會強行中斷,用法如:[Test, Maxtime(2000)],[Test, Timeout(2000)]。

 

 

Repeat

屬性標記測試方法重覆執行多少次,如:[Test, Repeat(5)]。

 

 

[RequiresMTA]/[RequiresSTA]/[RequiresThread]

屬性標記測試用例必須的在多線程、單線程、獨立的線程狀態下運行

 

Values

屬性標記測試用例的參數,以參數的形式傳入一組值,NUnit會把這組值分解成相應數量的子測試。當測試用例的2個參數都使用[Values]進行標記,NUnit預設生成2組數量乘積的用例,需要使用[Sequential]標記測試用例才能按順序生成一一對應的n(n=2組中最大數組長度)個子測試用例

 

 

ValueSource

屬性標記測試用例的參數,指定參數的數據源來自哪裡,在使用[ValueSource]指定數據源時,該數據源必須實現了IEnumerable介面,數據源可以是屬性、無參方法、實例或靜態成員

 

Nunit常用類和方法

 

1、Assert(斷言):如果斷言失敗,方法將沒有返回,並且報告一個錯誤。

1)、測試二個參數是否相等

Assert.AreEqual;

Assert.AreEqual;

2)、測試二個參數是否引用同一個對象

Assert.AreSame;

Assert.AreNotSame;

3)、測試一個對象是否被一個數組或列表所包含

Assert.Contains;

4)、測試一個對象是否大於另一個對象

Assert.Greater;

5)、測試一個對象是否小於另一個對象

Assert.Less;

6)、類型斷言:

Assert.IsInstanceOfType;

Assert.IsAssignableFrom;

7)、條件測試:

Assert.IsTrue;

Assert.IsFalse;

Assert.IsNull;

Assert.IsNotNull;

Assert.IsNaN;用來判斷指定的值是否為數字。

Assert.IsEmpty;

Assert.IsNotEmpty;

Assert.IsEmpty;

Assert.IsNotEmpty;

8)、其他斷言:

Assert.Fail;方法為你提供了創建一個失敗測試的能力,這個失敗是基於其他方法沒有封裝的測試。對於開發你自己的特定項目的斷言,它也很有用。

Assert.Pass;強行讓測試通過

2、字元串斷言(StringAssert):提供了許多檢驗字元串值的有用的方法

StringAssert.Contains;

StringAssert.StartsWith;

StringAssert.EndsWith;

StringAssert.AreEqualIgnoringCase;

3、CollectionAssert類

CollectionAssert.AllItemsAreInstancesOfType;集合中的各項是否是某某類型的實例

CollectionAssert.AllItemsAreNotNull:集合中的各項均不為空

CollectionAssert.AllItemsAreUnique;集合中的各項唯一

CollectionAssert.AreEqual;兩個集合相等

CollectionAssert.AreEquivalent;兩個集合相當

CollectionAssert.AreNotEqual;兩個集合不相等

CollectionAssert.AreNotEquivalent;兩個集合不相當

CollectionAssert.Contains;

CollectionAssert.DoesNotContain;集合中不包含某對象

CollectionAssert.IsSubsetOf:一個集合是另外一個集合的子集

CollectionAssert.IsNotSubsetOf:一個集合不是另外一個集合的子集

CollectionAssert.IsEmpty;集合為空

CollectionAssert.IsNotEmpty;集合不為空

CollectionAssert.IsOrdered;集合的各項已經排序

4、FileAssert

FileAssert.AreEqual;

FileAssert.AreNotEqual;

5、DirectoryAssert

DirectoryAssert.AreEqual;

DirectoryAssert.AreNotEqual;

DirectoryAssert.IsEmpty;

DirectoryAssert.IsNotEmpty;

DirectoryAssert.IsWithin;

DirectoryAssert.IsNotWithin;

 

Nunit測試工具下載:

 

  ReSharper集成:

       http://www.jetbrains.com/resharper/download/

Nunit工具:

  https://github.com/nunit/nunitv2/releases/tag/2.6.4可根據自己的需要進行下載

 

Nunit工具使用

 

1.下載解壓後,得到NUnit-2.6.4文件夾,打開文件夾中的bin文件,如下圖:

 

2.選中nunit.exe發送快捷方式到桌面,雙擊剛發到桌面上“nunit.exe-快捷方式”圖標,進入Nunit工具運行界面,如圖:

 

 

 

3如圖,通過菜單中File的下拉列表中的“Open Project Ctrl+O”項,找到為測試而寫的測試項目的.dll文件(.exe文件也可),添加到NUnit中。

 

4.下圖便是載入後的展示。直接單價Run按鈕,運行測試代碼。

 

5.用例測試,完全成功通過的示例圖為:

 

6.存在測試失敗時,圖示:

 

7.存在被忽略用例,不存在出錯用例時:

 

8.混合用例(同時存在忽略用例+出錯用例):

 

 

ReSharper使用單元測試

 

  1.以下是一個需要測試的類庫和一個 Nunit測試單元。

    

      2.右鍵 Nunit測試單元,選擇Run Nunit tests即可

          

 3.選擇之後就會看到如下界面:

 

這個界面的使用和Nunit Ui界面的使用類似,不多講。同時你可能看到有一個Dubug Nunit Tests 選項,他的功能就類似代碼調試,可以逐步調試測試用例調用的過程,記得打斷點。

       

註意

  在測試單元需要引入 這個包,這個包的來源可以在你下載的Nunit工具中找到。

學習資料:

http://www.cnblogs.com/kim01/default.aspx?page=3這個是對官網章節的翻譯,當然你也可以直接去官網查看。

 

測試項目:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 介紹如何在紅帽6.5的系統中搭建Samba伺服器,windows訪問是需要進行用戶名和密碼的驗證。 ...
  • ls:列出目錄內容(預設的就是當前工作目錄了) 格式:命令 [選項] [參數] 選項: -a:列出所有文件、目錄(包含隱藏文件、目錄) -l:以長格式的方式列出 -d:僅列出目錄本身 -h:配合-l選項使用,以友好的方式,顯示文件的大小(若不加-h,預設文件大小是以byte來顯示); 實例: [ro ...
  • 1. 命令的概念 命令的執行過程 系統第一次執行外部命令時Hash緩存表為空,系統會先從PTAH路徑下尋找命令,找到後會將路徑加入到Hasa緩存中,當再次執行此命令時會直接從Hash的路徑下執行,如果存在直接執行,如果不存在將繼續從PATH下的路徑繼續查找,Hash表可以提高命令的調用速率。 命令的 ...
  • 從VSS上獲取以前的老項目,編譯時報System.Runtime.CompilerServices.ExtensionAttribute..ctor 網上寫的“刪除 Newtonsoft.Json.Net20.dll 後重新引用”,並沒有解決這個問題。 原文首發在我的主力博客 http://anfo ...
  • 一. Dapper 簡介 一個效率比較高的微型ORM。 二 . Dapper.Rainbow Dapper的擴展,在這個擴展裡面實現了 Dynamic 的 插入和更新,這個對於使用動態類型的對象很有用,可以少建很多貧血型的實體類。 三 . Dynamic Dynamic 這是一把雙刃劍,在提高效率的 ...
  • 作者在做短鏈接功能時,url參數裡帶了&字元,結果無法轉換。後來查了一下,發現可以用其它符號代替。下麵是對應表 + URL 中+號表示空格 %2B 空格 URL中的空格可以用+號或者編碼 %20 / 分隔目錄和子目錄 %2F ? 分隔實際的URL和參數 %3F % 指定特殊字元 %25 # 表示書簽 ...
  • ASP.NET Core 輕量化開源論壇項目,ASP.NET Core Light forum NETCoreBBS 採用 ASP.NET Core + EF Core Sqlite + Bootstrap 開發。 GitHub: https://github.com/linezero/NETCor ...
  • 開頭添加變數: Point mouseOff;//滑鼠移動位置變數 bool leftFlag;//標簽是否為左鍵 事件部分: ps:很常用的幾串字元。 記住! 記住! 記住! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...