2013-10-30 113 views
2

我試圖用TDD開發我的第一個項目。在這種情況下,我必須在我的應用程序代碼之前編寫測試用例。在我的測試案例中,我有一些模擬對象。我想知道模擬對象的期望是否也必須在代碼創建之前編寫。如果確實如此,我該如何實現這一目標?我怎樣才能想象在寫真代碼之前必須調用的方法? (我使用的是JUnit和JMock的JAVA)測試驅動開發 - 模擬對象

回答

3

這正是TDD的工作原理。你根據你的規範編寫測試:你想讓被測試的類與它的依賴關係(模擬對象)做什麼。在編寫時,通過在您正在模擬的接口上添加方法來進行編譯(默認實現不會返回任何內容)。然後你可以進行單元測試(使用模擬)。當所有測試都通過時,您可以繼續爲依賴項添加單元測試,這將依次推動您在上述步驟中編寫的空方法的實現。

它將確保您對所有具體課程有100%的覆蓋率。

0

我想知道,如果模擬對象的期望必須的代碼創建

您可以創建一個具有一個方法之前寫入 也什麼也沒有,然後嘲笑結果。

我怎麼能想象在寫真 代碼之前必須調用的方法?

如何在不知道需要做什麼的情況下編寫代碼?從空方法開始...

2

這就是爲什麼TDD是設計方法在第一位。通過測試你是設計你的應用程序。您正在創建漂亮的API,然後通過編寫滿足您的設計(即符合要求)的代碼來實現此API。

從測試開始,它可以幫助您理解代碼的需求,並以斷言的形式記下這些需求(順便提一下,有人可以實現這些需求)。從一開始你就不會創造出最好的設計。但是,您的設計將在重構過程中發展 - 您將重命名方法和類,您將提取一些代碼。這將需要測試更改 - 您需要模擬提取的依賴關係。但是你的代碼隨時會滿足需求,因爲斷言將保持不變。