玩轉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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
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 的模型車來玩玩總是可以的。😜