mock object(模擬物件):
mock的特點:
1、提供和被模擬物件相同的介面
2、會檢查每個呼叫的上下文
以下幾種情況可以考慮建立mock
1、當被模擬的物件提供不確定的結果時(例如:當前時間或當前溫度)
2、很難建立或重現的狀態(例如:網路錯誤)
3、很慢(例如:資料庫,需要在測試前初始化)
4、還不存在或者也許會改變的行為
5、為了測試想提過一些額外的資訊和方法時
當測試乙個依賴於昂貴且複雜的資源的物件時,可嘗試建立乙個這些資源的模擬版本。
mock物件鼓勵你仔細思考各個物件的可見性,減少設計中的耦合,也給專案增加風險:模擬物件需要和現實物件的行為一樣,因而是需要對模擬物件的行為進行測試的。
fixture(固定設施):
是指多個測試需要的通用物件(也被稱為腳手架)
例子:emptyrectangletest
public void testempty()
rectangle empty = new rectangle(0,0,0,0);
asserttrue(empty.isempty());
public void testwidth()
rectangle empty = new rectangle(0,0,0,0);
asserttrue(0.0, empty.getwidth(), 0.0);
改成emptyrectangletest
private rectangle empty;
public void setup()
rectangle empty = new rectangle(0,0,0,0);
public void testempty()
asserttrue(empty.isempty());
public void testwidth()
asserttrue(0.0, empty.getwidth(), 0.0);
問題:
裡面提到如何測試不大可能被呼叫到的錯誤**,一種是單元測試,需要巢狀到**中;另一種是不是可以考慮通過效能測試來觸發(估計觸發也很有限)
觀點記錄:
「希望使用白盒測試不是一種測試問題,而是一種設計問題。每當我想使用乙個變數作為檢驗**是否執行正確的一種方法時,我就會獲得了改進設計的機會」
測試驅動開發的讀書筆記(一):
測試驅動開發的讀書筆記(二):
測試驅動開發的讀書筆記(三):
測試驅動開發的讀書筆記(四):
測試驅動開發的讀書筆記(五):
《測試驅動開發》 讀書筆記
測試驅動開發 讀書筆記 前言 測試驅動開發 tdd 以測試作為開發過程的中心,要求在編寫任何產品 之前,首先編寫用於定義產品 行為的測試,而編寫的產品 又要以使測試通過為目標。測試驅動開發要求測試可以完全自動化地執行,在對 進行重構前後必須執行測試。這是一種革命性的開發方法,能夠造就簡單 清晰 高質...
《測試驅動開發》讀書筆記
讀完本書的實踐 1 從簡單的例子開始,寫自動測試程式 2 重構,每次增加乙個新的設計構思 3 開發節奏 不可執行 可執行 重構 我們應該測試什麼?1 在開始寫測試之前,寫乙個包含你認為必須要編寫測試的清單,把你所知道需要實現的每種操作的範例都記錄在清單上 2 對於那些目前還不存在的操作,將其記錄到清...
《測試驅動開發的藝術》讀書筆記
tdd通過邊測試邊編寫 然後重構來防止重構所引起的錯誤 通過自動化測試和持續整合工具,隨時保持可以發布 tdd第一步 1.需求分解 2.將需求轉化成測試 3.寫乙個失敗的測試 4.逐步通過測試,再寫乙個測試 5.開始消除重複 由於這個時候有測試在了,所以不用擔心更改會引起整合錯誤 互動測試,並不驗證...