国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Unit Test

2019-11-17 02:54:24
字體:
來源:轉載
供稿:網友
Unit Test
  1. 單元測試的特性:
    • 自動的,可重復的
    • 容易實現
    • 一旦寫好,將來都可使用
    • 任何人都可以運行
    • 可以快速運行
    • 單擊一個按鈕就可以運行
  2. 單元測試與集成測試的區別:集成測試運行多個集成到一起的代碼單元,用來確認軟件中應該出現的一個或多個預期結果,而單元測試通常只鼓勵的運行和測試某個單元
  3. 測試方法命名規則:[被測方法]_[場景]_[預期行為],一個測試方法中如果有多個斷言,前面的斷言失敗了就會拋異常,導致后面的無法運行.另外應遵循的一個原則是一個測試類中最多只有一個Mock對象,其余為Stub對象
  4. Stub對象:對代碼單元中現有依賴項的一個替代品,可人為控制,通過使用Stub對象無需涉及依賴項即可對代碼進行測試,因為Stub對象可以人為控制其方法的執行結果,達到解除依賴的目的.
  5. 為了增強可測性,可以重構被測試類的設計
    • 抽取接口,以允許替換底層實現,這樣就可以定義一個Stub對象實現接口,引入到測試類中,解除對具體類的依賴進行測試。引入的方式有多種:構造函數,屬性賦值或者在被測試函數中直接定義Stub對象等
  6. Stub與Mock的區別:
    • Stub對象不會使測試失敗,Mock對象可以使測試失敗,Mock對象中會保存對象的狀態用于assert
      Mock objectpublic class MockService:IWebService{public string LastError;public void LogError(string message){LastError = message;}}[Test]public void Analyze_TooShortFileName_CallsWebService(){MockService mockService = new MockService();LogAnalyzer log = new LogAnalyzer(mockService);string tooShortFileName="abc.ext";log.Analyze(tooShortFileName);Assert.AreEqual("Filename too short:abc.ext",mockService.LastError);}public class LogAnalyzer{PRivate IWebService service;public LogAnalyzer(IWebService service){this.service = service;}public void Analyze(string fileName){if(fileName.Length<8){service.LogError("Filename too short:"+ fileName);}}}
    • 使用Stub對象時Assert斷言都是針對被測試類的,使用Mock對象則是對模擬對象進行斷言
    • clipboard
    • clipboard[1]
  7. 隔離框架(isolation framework):是可以方便的進行新建Mock對象和Stub對象的一組可編程Api讓程序員不用為了測試或模擬對象之間的交互而編寫重復的代碼
  8. 預期: 表示對被調用函數的預期
  9. 不需要對私有方法進行單元測試(在滿足第三條的情況下),理由如下:

    • 私有的方法一定是供暴露出來的方法調用的,測試了暴露方法,也就同時測試了私有方法,如果做不到,是否代碼重構有問題?
    • 單元測試的目的是為了保證你修改復用代碼時不會影響到所有引用這段代碼的程序 ,private方法本來就不能被別的類引用,所以不需要用單元測試來保證其正確性。
    • 然不測試,但是是建立在以下原則上的,你不應該有任何方法是從一開始設計出來就是private的,因為你的每段程序都應該在單元測試的驅動之下產生,而測試是不可能驅動出來一個private方法的。那么private方法從哪里來?只能從重構而來。所以private方法是不需要測試的,因為它是重構的產物,而重構是不改變程序可觀察之行為的。既然行為不改變,測試自然也不需要有任何改變,所以不需要針對private方法建立任何新的測試

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彰化县| 中卫市| 化德县| 岑溪市| 南雄市| 昔阳县| 财经| 腾冲县| 泰兴市| 康定县| 清水县| 正蓝旗| 垣曲县| 合作市| 铁力市| 哈尔滨市| 汶上县| 临海市| 新余市| 盘锦市| 彝良县| 高碑店市| 江孜县| 通许县| 横山县| 济阳县| 津南区| 德安县| 兖州市| 扶绥县| 当雄县| 新源县| 秀山| 临洮县| 廉江市| 九龙城区| 加查县| 疏勒县| 武义县| 江西省| 玛沁县|