# 單元測試 筆記 單元測試是測試程式中的最小單位,一次只測試一件事情,主要用於確認某一邏輯是否符合開發者預期,在往後修改程式碼時能保證邏輯扔然符合當初預期。 單元測試應切開與外部資源連接(例如: 資料庫連線),並能獨立執行測試。因為若測試沒有通過,能確保是邏輯有誤,而非外部的因素。常用Mock、Stub假物件來模擬與外部資源的互動,並只關注於我們要測試的邏輯的部分。 # Interface 在寫單元測試時,為了只單獨測試某一邏輯,會用到interface隔離與其他使用到的function的相依性,用Mock假物件建立一個與原程式相同的空殼子並去模擬其操作。 Interface會先建立一些方法,但還未真正實作。繼承這個介面的類別再去實作每一方法,故能以介面來隔離相依性,因為兩個類別是各別獨立實作各自的方法,只有介面的方法相同而已。 ``` public interface I手機 { string 打電話(string 電話號碼); string 掛電話(); string 調音量(int 音量大小); string 轉振動(); } public class iphone4S : I手機 { public string 打電話(string 電話號碼) { Console.WriteLine("iOS打電話給"+ 電話號碼); return "撥號中"; } public string 掛電話() { Console.WriteLine("iOS將通話中電話結束"); return "結束通話"; } public string 調音量(int 音量大小) { Console.WriteLine("iOS將音量調整為" + 音量大小); return "完成調音量"; } public string 轉振動() { Console.WriteLine("iOS將轉振動"); return "完成轉振動"; } public string 呼叫Siri(string 指令) { //注意這是I手機沒有定義的方法 return "Siri說" + 指令; } } ``` # 參考資料 1. https://blog.miniasp.com/post/2010/09/16/ASPNET-MVC-Unit-Testing-Part-03-Using-Mock-moq 2. https://dotblogs.com.tw/hatelove/archive/2012/11/13/learning-tdd-in-30-days-day5-how-to-isolate-dependency-the-basic-testability.aspx 3. https://dotblogs.com.tw/initials/2016/06/18/102618 ###### tags: `Back-end` `C#` `Unit test`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up