測試應該獨立于所有其他的測試,而且必須獨立于周圍的環境。目標只有一個,就是測試應該能夠以任意的順序一次又一次的運行,并且產生相同的結果。如果結果不同,則存在BUG。
Independent 獨立的
編寫測試時,確保一次只測試了一樣東西,但并不表示一個TestMethod內只能使用一個Assert,而是一個測試函數應該專注于產品代碼中的一個函數,或者組合起來并共同提供某個特性的一組函數。
Professional 專業的
測試代碼必須同產品代碼相同的風格來編寫。這意味著你需要抽取出共同且重復的代碼,并把它們放到一個功能類之中,從而可以復用;單元測試的代碼一樣講究------維護封裝,DRY原則,降低耦合。
何時需要Mock對象
l 真實對象具有不可確定的行為(產生不可預測的結果,如股票的行情)
l 真實對象很難被創建(比如具體的web容器)
l 真實對象的某些行為很難觸發(比如網絡錯誤)
l 真實情況令程序的運行速度很慢
l 真實對象有用戶界面
l 測試需要詢問真實對象它是如何被調用的(比如測試可能需要驗證某個回調函數是否被調用了)
l 真實對象實際上并不存在(當需要和其他開發小組,或者新的硬件系統打交道的時候,這是一個普遍的問題)
Mock對象的三個步驟
1. 原型
ClassA調用 ClassB的Method()

2. 使用一個接口來描述這個對象
ClassA 通過接口調用ClassB的Method

3. 以測試為目的,在mock對象中實現這個接口

文章來源于領測軟件測試網 http://www.kjueaiud.com/