只有累積,沒有奇蹟

2019年1月19日 星期六

[UnitTest] NUnit 入門教學

前言
NUnit 是一個 open source 的 .Net 單元測試框架,根據官方統計下載次數達到 3000 萬次,支援 .Net Framework 與 .Net Core,近幾年開始在寫單元測試以來一直是使用 NUnit 寫單元測試為主,最近計畫把常用的或是上課學到好用的功能寫成文章分享出來,以下簡單介紹如何在.Net Framework 使用 NUnit 寫單元測試

安裝 NUnit
首先我們到 Visual Studio | Marketplace 下載 Test Generator NUnit extension,支援 NUnit 2.6 及 3 以上版本,也支援 NUnit Test 與 IntelliTests ( 僅 VS Enterprise 支援 ),支援在方法上按右鍵快速產生單元測試

建立單元測試
這邊準備好一份簡單的 sample Code,Example 類別底下有個 Reverse 方法內容為將輸入的字串做反轉的動作,我們要對字串反轉的方法撰寫單元測試,步驟說明如下
  1. public class Example
  2. {
  3. public string Reverse(string input)
  4. {
  5. char[] charArray = input.ToCharArray();
  6. Array.Reverse(charArray);
  7. return new string(charArray);
  8. }
  9. }
Step 1 : 在 Reverse 方法上按右鍵,選擇 Create Unit Test
Step 2 : Test Framework 選擇 NUnit3,按下OK  (沒有NUnit選項請參考此網址)
在新增單元測試時可以選擇 / 輸入以下資訊
  • 是需要新建立一個測試專案或是在既有專案中
  • 測試專案、測試類別、方法的命名
  • Namespace 以及產生單元測試時 Assert 預設值
Step 3 : 會依據你上列選擇的項目產生下列要被測試類別內容
  1. using NUnit.Framework;
  2. using ConsoleApp2;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace ConsoleApp2.Tests
  10. {
  11. [TestFixture()]
  12. public class ExampleTests
  13. {
  14. [Test()]
  15. public void ReverseTest()
  16. {
  17. Assert.Fail();
  18. }
  19. }
  20. } 
這裡簡單說明
  • 自動 using NUnit.Framework 做為測試的框架 和 要被測試的類別 ConsoleApp2
  • 測試類別名稱為 被測試的類別+Tests
  • 預設 Assert fail
撰寫單元測試
產生了 UnitTest 的 Template 之後,接下來開始使用 3A 撰寫單元測試內容
  • Arrange : 測試物件的初始化、定義需要使用的參數資訊 
  • Act : 呼叫被測試的方法 
  • Assert : 驗證結果
Step 1 : 根據以上產生下列代碼
  1. namespace ConsoleApp2.Tests
  2. {
  3. [TestFixture()]
  4. public class ExampleTests
  5. {
  6. [Test()]
  7. public void ReverseTest()
  8. {
  9. //Arrange
  10. var ex = new Example();
  11. var input = "abc";
  12. //Act
  13. var actual = ex.Reverse(input);
  14.  
  15. //Assert
  16. var expected = "cba";
  17. Assert.AreEqual(expected, actual);
  18. }
  19. }
  20. }
Step 2 : 測試方法按下右鍵 > Run Tests (快捷鍵 : Ctrl + R T )
Step 3 : Visual Studio 會根據所選的測試進行驗證,執行結果可以在 Test Explorer 看到紅燈或綠燈 

快捷鍵
以上為 NUnit 簡單的介紹,另外在執行單元測試時可以透過快捷鍵更快的驗證單元測試的結果,以下分享我常用的快捷鍵
  • Run Test : Ctrl + R,T 
  • Debug Test : Ctrl + R, Ctrl T 
  • Run All Test : Ctrl + R, A 
  • Repert Last Run : Ctrl + R, L 
參考
NUnit
Test Generator NUnit extension



Related Posts:

  • [Free] 更新 ASP.NET Core 的兩三事 電子書 前言 之前有整理 ASP.NET Core 相關文章變成一本電子書 Something about ASP.NET Core 並放在 Github 上供人自行取用 (詳細可以參考 這篇 文章),去年也有撰寫一些相關的議題因此在過年期間也針對電子書做更新,新增的內容及章節如下 建立 Azure Container Registry 並整合 Microsoft Team 通知 如何在 ASP.NET Core Midd… Read More
  • [NETCore] ASP.NET Core 建立排程服務 - 使用 Generic Host 搭配 Quartz.Net - Part 1前言 最近有個需求是固定時間取得特定資料進行修改,在查詢相關資料之後決定使用 ASP.NET Core Generic Host 為出發,在搭配 .NET 中熱門的排程套件 Quartz.Net,測試完畢之後再將程式註冊為 Windows Service 服務就可滿足使用者的需求,這篇文章是整理開發時的重點流程為系列文,給有需要使用 ASP.NET Core 開發排程相關應用程式需求的朋友一些參考,若有問題或是錯誤的地方歡迎各位高手給予… Read More
  • [conference] .NET Conf 2021 - 初探 OpenTelemetry - 蒐集遙測數據的新標準 分享心得 參加好幾屆 .NET Conf 每次都是收穫滿滿,今年被主辦單位也是技術管理者論壇志工 Kyle 推坑在 .NET 年度盛會邀請分享,原本十分不好意思但想到之前已經有在 COSCUP 與 MOPCON 分享過兩場,於是決定分享最近有興趣的議題 OpenTelemetry 開源框架, 依舊保持緊張就斷片的正常發揮,在一開始主持人介紹完開場就立刻忘詞 (掉漆again),很高興可以參予 Study4.TW 10年盛會,可以有機會在講師… Read More
  • [NETCore] 如何在 ASP.NET Core Middleware 加上單元測試 Unititest前言 Middleware 在 ASP.NET Core 開發時是個很常見的功能,概念很像 ASP.NET Application Life cycle 管線的 Handler 機制 (若對於 Life Cycle 想了解更多可以看之前寫的文章 Application Life Cycle),提供開發者可以在 Request 進入到 Application 前加上客製化的邏輯,實務上用起來挺方便的也蠻好用的,在加上 middleware 相關… Read More
  • [Azure] App Service Diagnostics - Collect Memory Dump 前言 前兩篇分別介紹了 App Service Diagnostics 中的 Collect .Net Profiler Trace 與 Auto heal,分別都可以透過工具來蒐集雲端伺服器的緩慢問題分析與蒐集記憶體資訊,這一篇則是介紹如何 dump 目前伺服器 memory 的資料,以及有多個伺服器的時候該如何抓取特定的 Server memory data。若對於上述內容有問題或是不清楚的地方,歡迎提出來一起討論。 Colle… Read More

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com