玩轉C#之【單元測試】

閱讀時間約 3 分鐘

介紹

通常我們程式寫完之後,要確保程式沒問題我們就會進行測試
在這裡我們將測試分兩大類:
  • 單元測試(Unit Test,UT):對程式碼的最小單位所進行的測試
  • 整合測試(Integration Test):系統/模組之間的測試,通常會接觸到真實系統
在這裡只會簡單介紹一下單元測試的概念
這裡在將單元測試講白話一點,我們會寫一個程式用來測試我們寫的每一個function 是否正確
假設我們寫好一段程式sum功能
class Computer
{
//加法計算
public int sum(int x, int y)
{
return x + y;
}
}
我們可能會類似這樣寫測試程式
void sum_輸入1_1輸出2
{
//arrang
var target =new Computer();
int x =1;
int y =1;
int expected = 2;
//act
int actual =target.sum(x,y);
//assert
//這段意思就是 如果expected等於actual 則表示測試成功,如果不等於就會顯示測試失敗
Assert.AreEqual(expected,actual);
}
測試寫完後會這樣執行:
📷
並且會顯示測試結果:
📷

單元測試的特性

在撰寫測試程式時需要保持以下特性:
• Fast 快速
• Independent 獨立
• Repeatable 可重複
• Self-Validating 自我驗證(可反應驗證結果)
• Timely 及時

Fast 快速

每個單元測試的執行時間應該要很短。
一個單元測試的執行時間單位都是毫秒,如果有某個單元測試所執行的時間超過數秒,就要做檢查。
因為每次修改程式的時候都應該執行測試,確保沒有被改壞,因此如果時間跑太長,你每次改好一段Code就要等好幾分鐘,豈不是浪費生命都在等待。

Independent 獨立

單元測試不與外部資源相依,單元測試之間也不能夠相依,要能夠單獨針對測試目標進行測試。
外部資源(檔案、資料庫、網路、服務、元件等),單元測試都是個別獨立、無順序性、執行結果不會影響其他測試。
假設在一個沒網路的環境是不應該影響到測試結果。

Repeatable 可重複

所有的單元測試都可重複被執行,且不影響預期的結果。
無論執行多少次,測試的結果都是一樣的
不應該出現會被環境影響到,或者亂數

Self-Validating:自我驗證(可反應驗證結果)

單元測試執行不論成功或失敗,都應該要能夠從測試報告裡直接瞭解其意義或失敗的原因。

Timely:及時

單元測試應該在產品程式碼完成的當下就可以驗證執行結果是否,符合預期
關於Muck、Test Framewor..等等之後會專門寫一篇文章跟大家講解

參考資料

本篇已同步發表至個人部落格
https://moushih.com/2022ithome25/
鐵人賽文章
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
8會員
39內容數
我是這個部落格的作者,喜歡分享有關投資 💰、軟體開發 💻、占卜 🔮 和虛擬貨幣 🚀 的知識和經驗。
留言0
查看全部
發表第一個留言支持創作者!
一代軍師 的其他內容
介紹 原始碼(source code)→編譯器→中繼語言(MSIL)→CLR→電腦看得懂的語言(Native code) 所以我們可以知道,CLR( Common Language Runtime ):是 .NET Framework 的虛擬機器元件 (virtual machine compone
小心設計模式別亂用 📷 介紹 設計模式就是過去的人,根據常見的軟體設計的問題,提出的解決方案。 設計模式總共有23種,根據情境分成三大類型,建立型、結構型、行為型。 建立型模式(Creational Patterns) 簡單工廠(Simple Factory) 工廠方法(Factory) 抽象工廠
介紹 何謂原則(Principle) A principle is a concept or value that is a guide for behavior or evaluation 所謂【原則】(Principle)就是一種【概念】或【價值】,用來導引你產生適切的行為與價值評量方法 白話文
介紹 非同步程式設計模式(Asynchronous Programming Patterns) APM 非同步程式設計模型 EAP 事件架構非同步模式 TAP 以工作為基礎的非同步模式 先在主要以TAP APM (Asynchronous Programming Model) 非同步程式設計模型.N
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
介紹 原始碼(source code)→編譯器→中繼語言(MSIL)→CLR→電腦看得懂的語言(Native code) 所以我們可以知道,CLR( Common Language Runtime ):是 .NET Framework 的虛擬機器元件 (virtual machine compone
小心設計模式別亂用 📷 介紹 設計模式就是過去的人,根據常見的軟體設計的問題,提出的解決方案。 設計模式總共有23種,根據情境分成三大類型,建立型、結構型、行為型。 建立型模式(Creational Patterns) 簡單工廠(Simple Factory) 工廠方法(Factory) 抽象工廠
介紹 何謂原則(Principle) A principle is a concept or value that is a guide for behavior or evaluation 所謂【原則】(Principle)就是一種【概念】或【價值】,用來導引你產生適切的行為與價值評量方法 白話文
介紹 非同步程式設計模式(Asynchronous Programming Patterns) APM 非同步程式設計模型 EAP 事件架構非同步模式 TAP 以工作為基礎的非同步模式 先在主要以TAP APM (Asynchronous Programming Model) 非同步程式設計模型.N
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
介紹 📷 定義 處理序(Process) (大陸:進程): 一個程序運行時,占用全部計算資源的總和 執行緒(Thread) (大陸:線程):是作業系統能夠進行運算排程的最小單位。 大部分情況下,它被包含在行程之中,是行程中的實際運作單位。 C#多線程和異步(一)——基本概念和使用方法 執行緒帶來的
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
【尊重,是人際關係的基石】—取自一分鐘,小故事。 蘇東坡和佛印和尚是很好的朋友,但是兩人都喜歡彼此嘲諷對方,每次見了面,不互相較勁一下總不肯罷休。 儘管這樣激烈的脣槍舌劍常常上演,卻似乎沒有減損他們的友誼。 據說,有一天,蘇東坡與佛印兩人一起坐著打禪。 一會兒功夫,蘇東坡睜開眼問佛印:「你看
Thumbnail
(2024年10月3日的小故事思考,2024年10月8日的個人思考紀錄) 【沒有絕對的是與紛非】—取自絕對讓你感悟的小故事 善於思考成就了智者。 智者有兩個徒弟。一次,他們看到屋裏飛進一隻蜜蜂,蜜蜂努力地朝窗外飛,卻被窗上厚厚的玻璃擋住了,一次次徒勞地摔下來。 徒弟甲說:「這隻蜜蜂真是愚
Thumbnail
(2024年10月2日的小故事,2024年10月7日個人思考紀錄) 【郭子儀寵辱不驚】—蕩氣迴腸的90則歷史故事 人獲得了一定的權勢、地位,便容易受到別人的猜忌,也是福禍共生。 唐朝名將郭子儀深知此點,反其道而行,敞開府門,任人探究,結果化凶為吉,平安無事。 郭子儀爵封汾(音同焚
Thumbnail
(2024年10月1日的小故事,2024年10月6日個人思考記錄) 【騎單車的感覺更好】 有一個人因為生意失敗,迫不得已變賣了新購的住宅,而且連他心愛的小跑車也脫了手,所以單車代步。 一日,他和太太一起,約了幾對私交的夫妻出遊,其中一位朋友的新婚妻子因為不知詳情,見到他們夫婦共乘一輛單
Thumbnail
(2024年9月30日的小故事,2024年10月6日個人思考記錄) 【先把事情做對】 一個小徒弟拜師學理髮。徒弟很聰明,學得很認真,手腳也靈活,深得師傅喜歡。學習刮臉刮鬍子時,師傅先讓他在一個大葫蘆瓜上練習。 小徒弟一招一式地練,動作很細很輕,頗得師傅誇讚,就是養成了一個懷習慣:每次練
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
【尊重,是人際關係的基石】—取自一分鐘,小故事。 蘇東坡和佛印和尚是很好的朋友,但是兩人都喜歡彼此嘲諷對方,每次見了面,不互相較勁一下總不肯罷休。 儘管這樣激烈的脣槍舌劍常常上演,卻似乎沒有減損他們的友誼。 據說,有一天,蘇東坡與佛印兩人一起坐著打禪。 一會兒功夫,蘇東坡睜開眼問佛印:「你看
Thumbnail
(2024年10月3日的小故事思考,2024年10月8日的個人思考紀錄) 【沒有絕對的是與紛非】—取自絕對讓你感悟的小故事 善於思考成就了智者。 智者有兩個徒弟。一次,他們看到屋裏飛進一隻蜜蜂,蜜蜂努力地朝窗外飛,卻被窗上厚厚的玻璃擋住了,一次次徒勞地摔下來。 徒弟甲說:「這隻蜜蜂真是愚
Thumbnail
(2024年10月2日的小故事,2024年10月7日個人思考紀錄) 【郭子儀寵辱不驚】—蕩氣迴腸的90則歷史故事 人獲得了一定的權勢、地位,便容易受到別人的猜忌,也是福禍共生。 唐朝名將郭子儀深知此點,反其道而行,敞開府門,任人探究,結果化凶為吉,平安無事。 郭子儀爵封汾(音同焚
Thumbnail
(2024年10月1日的小故事,2024年10月6日個人思考記錄) 【騎單車的感覺更好】 有一個人因為生意失敗,迫不得已變賣了新購的住宅,而且連他心愛的小跑車也脫了手,所以單車代步。 一日,他和太太一起,約了幾對私交的夫妻出遊,其中一位朋友的新婚妻子因為不知詳情,見到他們夫婦共乘一輛單
Thumbnail
(2024年9月30日的小故事,2024年10月6日個人思考記錄) 【先把事情做對】 一個小徒弟拜師學理髮。徒弟很聰明,學得很認真,手腳也靈活,深得師傅喜歡。學習刮臉刮鬍子時,師傅先讓他在一個大葫蘆瓜上練習。 小徒弟一招一式地練,動作很細很輕,頗得師傅誇讚,就是養成了一個懷習慣:每次練
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
暢銷懸疑小說的《法庭遊戲》改編為電影版,日前也在台灣上映,燒腦的情節加上法庭的諜對諜攻防;再加上永瀨廉、杉咲花、北村匠海三位高人氣演員加持。
Thumbnail
自2020年問世以來,日本潮流品牌Water The Plant便以其獨特的設計理念和色彩豐富的產品系列,在全球潮流文化中掀起了一股正能量的旋風。
Thumbnail
戴姆勒克萊斯勒出產的後輪驅動雙門跑車 Chrysler Crossfire(火線),使用 33% 賓士 SLK 跑車零件,在 2003 年推出,於 2007 年因為公司重組後停產。雖然,1:1 的新車買不起,那買台 1:18 的模型車來玩玩總是可以的。😜