如果你是在TDD迭代的中間,你怎麼知道哪些測試失敗,因爲現有的代碼是真正的不正確和失敗,因爲無論是測試本身或功能避風港尚未實施?請不要說,「你只是不在乎,因爲你必須解決這兩個問題。」我準備好移過那個心態。TDD做法:真正的失敗和未執行的功能
我編寫測試一般的做法如下:
首先,我建築師測試套件的總體結構,全部或部分轉載。那就是 - 我只會寫下測試的名稱,提醒我想要實現的功能。我通常(至少在python中)只是從每個測試只有一行開始:self.fail()。通過這種方式,我可以通過列出我認爲我想要測試的每個功能 - 比如說,一次11個測試來啓用意識流。
其次,我選擇一個測試,並實際編寫測試邏輯。
第三,運行測試轉輪和看到11個故障 - 10,簡單地self.fail()和1這是一個真正的AssertionError。
第四,我編寫了導致我的測試通過的代碼。
第五,運行測試轉輪和看到1通和10級的故障。
第六,我轉到步驟2
理想的情況下,而不是看到的通行證,失敗和異常處理方面的測試,我想有一個第四種可能性:NotImplemented。
這裏最好的做法是什麼?
這屬於程序員.se – Ikke
寫入大量的單元測試才能讓他們通過是一個巨大的TDD *反*模式 - 所以「最佳做法」是「不要這樣做」。當所有測試都通過時,很容易解釋測試結果。正如你發現的,當很多測試失敗時,解釋測試結果並不容易。 (注意:我不是Python開發人員,但是我在其他語言中完成了很多TDD。) –
那麼最好的模式是什麼?思考一個功能,並在現場爲其編寫測試?如果這是唯一可接受的TDD模式,我會完全拒絕TDD。我很重視能夠以測試名稱的形式輸出大量未來的單位,然後一次一個地寫出測試內容。這是一個非常主流的方法,至少在django社區。但是,使用@expectedFailure修飾器不是AFAIK。 – jMyles