2013-03-17 254 views
0

測試驅動開發是否需要單元測試?我經常發現沒有單元測試沒有TDD的觀點。我無法通過Wiki或我可以訪問的書籍等受尊重的來源進行確認。TDD是否需要單元測試?

維基百科:

測試驅動開發(TDD)是一種軟件開發過程 依賴於在非常短的開發週期的重複:第一 開發者編寫的(最初失敗的)的自動測試情況 定義所需的改進或新功能(...)

如果它意味着創建集成測試不需要單元測試是不夠遵循TDD?

+5

少擔心進程的名稱,並詳細瞭解所涉及的技術。單元測試和集成測試都是好東西,不管總體範例是什麼。 – 2013-03-17 00:11:22

+0

有時候一個人不得不擔心 – 2013-03-17 00:14:42

+0

啊,也許我誤解了你的問題(它似乎是「我可以避免單元測試,仍然稱它爲TDD?」) – 2013-03-17 00:18:51

回答

3

如果集成測試有意義並提供有用(快速)反饋,那麼當然。這不是關於測試範例的純粹性,而是關於快速反饋循環和正在編寫的代碼的驗證。只要你有這個,你有TDD。

請注意,在這種情況下,我不會將維基百科引用爲受尊重的資源。當然是參考資料的來源。但是,如果您有關於TDD的問題,我懷疑這個主題上有比Kent Beck's book更受推崇的資源。

+0

感謝您的有用評論。關於源代碼,我還研究了我可以訪問的書籍和本研究http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf – 2013-03-17 00:13:12

+0

ps。我發現令人困惑的原因之一是「TDD的三個定律」。他們每個人都提到「單元測試」。 – 2013-03-17 00:38:31

+1

@LukaszKujawa:比法律書更注重法律精神。 (事實上​​,正如「三部法律」所表明的虛構一樣,法律是可以解釋的。)測試應該是有意義的,應該準確地驗證代碼。他們應該是孤立的和可重複的。他們應該沒有副作用。如果這一切都可以通過集成測試來完成,那就太好了。如果可以通過UI腳本測試來完成,那很好。只要價值在那裏。 – David 2013-03-17 01:50:02

-1

當你開發TDD時,據說最好的測試是原子性的和孤立的。這意味着他們正在測試非常具體的東西,而不依賴於項目中的其他東西。 UnitTest正是用於此目的,所以我想沒有單元測試就沒有TDD。

使用TDD進行開發的想法是爲您自己和團隊確信您的所有代碼仍然按照預期工作。爲了達到這個目的,你需要一個集成的服務器,在你整合所有東西的時候,測試必須運行。如果你使用框架進行單元測試,這很容易實現。

我真的很推薦這本書,它是短,易於閱讀,並真正體現出你的方式:

Test Driven: Practical TDD and Acceptance TDD for Java Developers

相關問題