2009-06-02 15 views
3

欣賞任何具有使用TDD和Model-View-Presenter模式使用Rhino Mocks的有用信息的網站的優秀示例或參考。使用TDD和模型視圖演示器使用Rhino Mocks的好例子/參考

我所尋找的是相對於以下幾點

  • 什麼嘲笑(圖和主持人)
  • 新的AAA語法
  • 如何嘲笑UI行爲?例如如果在視圖中輸入的「firstName」和「lastName」啓用 「提交」按鈕,則禁用它。這只是一個簡單的例子。
  • 最佳做法

在這個方向上的任何輸入被不勝感激。

在此先感謝。

回答

4

既然你還沒有得到答案,我會盡我所能學習到目前爲止,

第一個問題;什麼嘲笑 - 通常你會嘲笑你沒有測試的一切。因此,假設你正在測試一個ViewModel,你可以模擬改變ViewModel的視圖代碼,以及模擬填充/保留ViewModel的模型代碼。

第二個問題; AAA語法 - 通過將以下類型的註釋添加到您的測試方法中,最容易保留AAA語法;模擬UI行爲 - 通常你把它放在測試的Act部分(用於測試ViewModel)。第三個問題,模擬UI行爲 - 通常你把它放在測試的Act部分(用於測試ViewModel)。

最後一個問題,最佳實踐,我的經驗說:

  • 一次只斷言一件事,那麼你的測試將會失敗,只有一次失敗,並且當你弄清楚出了什麼問題時,你將會節省大量的時間。你甚至可以爲每個斷言創建一個測試方法,但要問一個關於如何實現的新問題,因爲它需要不同的AAA語法實現來使事情可管理。
  • 使用依賴注入,因爲它使代碼更容易模擬。
  • 儘可能輕量級地進行測試 - 不要去數據庫或磁盤上進行快速測試,以便開發人員儘可能多地執行測試。如果花費我5分鐘來完成測試,我會厭倦等待。如果需要10秒,我願意更頻繁地做。
  • 最後 - 但最重要的是 - 確保您的團隊中的任何人通過您的單次測試執行所有單元測試。這將使您的測試保持最新狀態,並使代碼基礎更加穩定。使用像CruiseControl.net這樣的contiues集成平臺來建立一個獨立的服務器 - 儘可能經常。線索是,如果有人/事物破壞了構建,你想盡快知道。

我的推薦參考文獻;使用'你最喜歡的搜索引擎'來搜索你想要做的事情,或者在這裏發佈你的測試例子並獲得評論 - 這將幫助你改進你正在做的事情。

1

菲爾·哈克對此有個不錯的blog post。下載源代碼並看看測試,它們評論得非常好。

+0

我不會推薦這個參考資料用於AAA或用RhinoMocks編寫單元測試;代碼不會使用AAA語法進行測試,並且使用Record/Reply寫入測試對我而言,與AAA語法相比,它是一團糟。 – Thies 2009-07-23 11:55:59