iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
Software Development

單元測試從入門到進階之路 (以 C# NUnit 3 X NSubstitute 為例) 系列

隨著軟體技術的高速發展,系統的複雜性也隨之增加。以我以往工作經歷,很常有上線系統發生不知名的臭蟲,追蹤問題後往往是發生在與此功能較沒直接相關的環節,例如輸入網址取得資料,資料出不來的問題出自於商業邏輯的撰寫問題;又或是網頁套件更新,導致延伸套件的功能出錯等。

因此,透過這次鐵人賽,了解測試的重要性,其理論、實作與應用等。測試領域有種常見的分法可分成單元測試、整合測試與端點測試,而單元測試是測試當中的基底,會隨著系統架構的不同,而需決策出適合的單元測試框架與目標,以達到最大效益。因此,鐵人賽文章會以 Roy Osherove 出版的「單元測試的藝術」為本賽事內主,再搭配線上教學資源為輔。

鐵人鍊成 | 共 30 篇文章 | 18 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11-假物件 (Fake) - 虛設常式 (Stub)-3 (核心技術-3)

看程式碼說故事-3 在昨天 Day-10 把 EmailSystem 從 JJEmail 這隻套件抽離;同時,在測試方面也針對 EmailFunction 撰寫...

2021-09-11 ‧ 由 SunshineYen 分享
DAY 12

Day 12-假物件 (Fake) - 模擬物件 (Mock)-1 (核心技術-4)

模擬物件(Mock)簡介 在先前我們所撰寫的單元測試中,3A 原則所做的不外乎是新增物件、執行物件方法、驗證物件回傳的結果或呼叫物件本身的屬性。好,關鍵在最後驗...

2021-09-12 ‧ 由 SunshineYen 分享
DAY 13

Day 13-假物件 (Fake) - 模擬物件 (Mock)-2 (核心技術-5)

假物件兄弟戰:虛設常式 V.S 模擬物件 相信許多人剛接觸完虛設常式與模擬物件,會說不出兩者之間確切的差別,有種曖昧糾纏的感覺。兩者都是假物件,之間最大的差異就...

2021-09-13 ‧ 由 SunshineYen 分享
DAY 14

Day 14-假物件 (Fake) - 模擬物件 (Mock)-3 (核心技術-6)

只針對一個關注點測試 昨天提到虛設常式與模擬物件的差異,兩者之間之差在驗證的時候如果是用該假物件驗證,則為模擬物件;反之,則為虛設常式。此外,每一次的測試都應該...

2021-09-14 ‧ 由 SunshineYen 分享
DAY 15

Day 15-隔離框架 (isolation Framework) - 概念基本介紹 (核心技術-7)

何謂隔離框架 (isolation Framework) 今天走到了鐵人賽一半的賽點,終於要提到我們標題 NSubstitute 相關概念的介紹了XD。好,那先...

2021-09-15 ‧ 由 SunshineYen 分享
DAY 16

Day 16-隔離框架 (isolation Framework) - NSubstitute 基本介紹 (核心技術-8)

NSubstitute 基本介紹與安裝 NSubstitute(簡稱 NSub)是一套友善的 .NET 隔離框架套件,讓開法者以簡單、乾淨的語法撰寫測試,這套框...

2021-09-16 ‧ 由 SunshineYen 分享
DAY 17

Day 17-隔離框架 (isolation Framework) - NSubstitute 基本介紹-2 (核心技術-9)

NSubstitute 基本語法前言 今天的文章主要參考於 NSubstitute官方網站,正所謂工欲善其事,必先利其器,我們若想要透過 NSub 自動化寫出好...

2021-09-17 ‧ 由 SunshineYen 分享
DAY 18

Day 18-隔離框架 (isolation Framework) - NSubstitute 基本介紹-3 (核心技術-10)

NSubstitute 基本語法前言-2 今天會是基本介紹 NSubstitute 的最後一個篇章 XD (含今天花了四天的篇幅介紹,還有一些比較深的寫法看之後...

2021-09-18 ‧ 由 SunshineYen 分享
DAY 19

Day 19-重構 (Refactoring) 與接縫 (Seam) - 1 (核心技術-11)

程式碼設計框架對測試碼可測試性的影響 今天進到核心技術的第三個系列—重構 (Refactoring) 與接縫 (Seam),那不免俗的先來看 Roy Osher...

2021-09-19 ‧ 由 SunshineYen 分享
DAY 20

Day 20-重構 (Refactoring) 與接縫 (Seam) - 2 (核心技術-12)

在方法被呼叫前注入一個假物件-前言 (以工廠類別為示範) 今天接下來會探討第三種型別,並非透過建構函式或屬性注入的方式建置假物件,而且在對被測試物件進行操作前才...

2021-09-20 ‧ 由 SunshineYen 分享