前言:如果我們要寫好我們的單元測試,可能我們要有好的佈局,也要規劃好如何去創建單元測試的類,單元測試的方法,下麵簡單的說一下。1:分開集成測試和單元測試如果我們把集成測試和單元測試放在一起如果出現問題可能出現的原因比較多那麼我們直接進行分離,建立2套類庫。如下圖2:將測試類映射到測試代碼2.1:每一...
前言:如果我們要寫好我們的單元測試,可能我們要有好的佈局,也要規劃好如何去創建單元測試的類,單元測試的方法,下麵簡單的說一下。
1:分開集成測試和單元測試
如果我們把集成測試和單元測試放在一起如果出現問題可能出現的原因比較多那麼我們直接進行分離,建立2套類庫。如下圖
2:將測試類映射到測試代碼
2.1:每一個被測試的類對應一個測試類
就是在測試項目中,用被測試類的名字加上UnitTests尾碼命名。如果被測試類是Login,測試項目中創建的測試類就是LoginUnitTests。這種就是每一個類一個測試類。
2.2:每個功能對應一個測試類
就是為每一個方法創建一個測試類,不過由於方法比較多,會出現大量的測試類,所以需要權衡一下,比喻項目中某些功能需要測試用例特別多那麼你就需要為這單獨的功能添加測試類。比喻GetAuthory這個方法的測試用例比較多,那麼我們就需要單獨的把他測試用例放一個類中。這時候我們需要創建2個測試類,AuthoryUnitTests_GetAuthory和AuthoryUnitTests前者包含GetAuthory的測試後者包含其他所有的測試。
3:方法怎麼去命名
在單元測試中我們儘量少些註釋,以至於不寫,那麼我們就要寫出很高質量的測試名稱,那麼可以採取 準備對象-操作對象-斷言 的模式。
準備對象:就是你要為他測試的對象,說白了就是你的方法名稱比喻AddUser,DeleteUser等
操作對象:你將要對這個對象具有什麼樣的操作,比喻有效的用戶名,無效的用戶名等
斷言:就是對結果做出判斷,比喻這個操作會拋異常,這個操作正常,這個操作會失敗,這個值會發生改變等
下麵舉個例子
AddUser_ValidUserInfo_ReturnsTrue
當添加一個有效的用戶的時候應該返回True
AddUser_IdIsNullOrEmpty_Throws
當添加用戶的時候Id會Null或者Empty的時候回拋出異常。
比喻還有些調用沒有返回值但是可以看見狀態的改變
Add_WhenCalled_StateChange(Add為一個例子)
就是當調用Add這個方法的時候回導致我們系統狀態的改變
以上只是建議。