我在TD上讀了很多關於TDD和單元測試的問題和答案,但是我沒有發現任何答案:我從哪裏開始?從頭開始TDD項目
我和團隊已經完成了一些項目,其中我們採用了單元測試,用於我們的代碼......但先編碼然後再進行單元測試。在開發過程的某個階段,首先編寫測試代碼然後編寫代碼變得很自然,這使我們獲得了更多的TDD風格。
現在我們想進行下一步,並嘗試從一開始就用TDD啓動一個新項目。這是問題......從哪裏開始?當我沒有代碼時,我會寫的第一個測試是什麼?
比方說,爲了讓上下文思考,我必須開發一個以文檔爲中心的互聯網應用程序,只需要一點工作流程和其他的東西。但是讓我們從頭開始:首先,我想創建一個簡單的頁面,列出存儲在數據庫表格中的所有文檔(元數據)(很簡單,呃?)。 這是我寫的第一個測試?假設我正在使用Hibernate來訪問數據庫...我會測試ipothetical方法getAllDocuments()嗎?但是,我應該使用一個模擬對象來替代Hibernate?那麼我測試了什麼?
我在這裏有點困惑......另外,getAlDocuments()可能永遠不會是一個生產方法......所有文檔集合都會被排序並被某些東西過濾......它有意義嗎? 任何建議將理解
編輯:
讀你的答案(和http://programmers.stackexchange.com相似主題),我帶着TDD的美好憧憬之後,但我仍然有一個dubt。
我總是儘管TDD是關於首先進行單元測試的...從未考慮過端到端測試。 但讓我問:TDD說你必須寫一個測試並看到一個編譯錯誤;然後你創建類和方法,你會得到一個測試失敗;然後你執行該方法並通過測試。在測試失敗之前,您無法編寫代碼;在所有測試通過之前,你不能寫另一個測試。我在這裏嗎?
作爲第一次測試,我該如何進行端到端測試?我應該在所有層中編寫所有代碼,以通過測試。但後來我會有一大堆的類和方法都通過了我的端到端測試(儘管我不應該稱之爲集成測試?)。這意味着我不再需要單元測試,因爲我已經有了一個覆蓋我的代碼的測試。我不能寫一個已經通過的測試,這是違背TDD的實踐。
幫助我理解這個提前進一步的步驟請
我通常從寫入自動加載器組件的測試開始。然後爲我添加的每個班級。 – hakre 2011-06-16 16:37:03
http://programmers.stackexchange.com/questions/84252/tdd-what-happens-before-the-first-unit-test/84255#84255 就在昨天問了同樣的問題。 – 2011-06-16 16:55:55