PART I: The Money Example 1
Chapter 1: Multi-Currency Money 3
Chapter 2: Degenerate Objects 11
Chapter 3: Equality for All 15
Chapter 4: Privacy 19
Chapter 5: Franc-ly Speaking 23
Chapter 6: Equality for All, Redux 27
Chapter 7: Apples and Oranges 33
Chapter 8: Makin' Objects 35
Chapter 9: Times We're Livin' In 39
Chapter 10: Interesting Times 45
Chapter 11: The Root of All Evil 51
Chapter 12: Addition, Finally 55
Chapter 13: Make It 61
Chapter 14: Change 67
Chapter 15: Mixed Currencies 73
Chapter 16: Abstraction, Finally 77
Chapter 17: Money Retrospective 81
PART II: The xUnit Example 89
Chapter 18: First Steps to xUnit 91
Chapter 19: Set the Table 97
Chapter 20: Cleaning Up After 101
Chapter 21: Counting 105
Chapter 22: Dealing with Failure 109
Chapter 23: How Suite It Is 113
Chapter 24: xUnit Retrospective 119
PART III: Patterns for Test-Driven Development 121
Chapter 25: Test-Driven Development Patterns 123
Chapter 26: Red Bar Patterns 133
Chapter 27: Testing Patterns 143
Chapter 28: Green Bar Patterns 151
Chapter 29: xUnit Patterns 157
Chapter 30: Design Patterns 165
Chapter 31: Refactoring 181
Chapter 32: Mastering TDD 193
Appendix I: Influence Diagrams 207
Appendix II: Fibonacci 211
Afterword 215
Index 217
附注A 注釋關鍵點匯總 221
附注B xUnit實例的Java版本 223
中文目錄
第1部分 貨幣實例
第1章 多幣種資金 3
工欲善其事,必先利其器。初次見到TDD,還是先試試JUnit稱心不稱心吧。另外,從開始時就建立“TODO List”的習慣很重要。
第2章 變質的對象 11
Interface不是拍腦門得來的,而是因為測試用例編譯不能通過。盡快讓測試用例運行是壓倒一切的中心任務。
第3章 一切均等 15
學會試用重構改進設計,重構和TDD是不可分離的左右手。
第4章 私有性 19
本章使用剛剛開發(fā)的一個功能來改進測試用例。
第5章 法郎在訴說 23
大的目標還不清晰的時候,可以先寫一些小的測試用例,或者把大的測試拆成小的。
第6章 也談一切均等 27
消除冗余代碼,有時很需要技巧。
第7章 蘋果和橘子 33
除非有很好的動機,否則不要引入更多的設計。
第8章 制造對象 35
再次消除冗余代碼,這常常是重構的主要目的。
第9章 我們所處的時代 39
軟件設計不要天馬行空,要腳踏實地。
第10章 有趣的乘法 45
Java程序員有時用toString()方法直接調試,不用擔心,大師也這么做。
第11章 萬惡之源 51
刪除一些測試,因為它們已經冗余了或不適應新的設計。
第12章 加法,最后的部分 55
在設計中應用比喻,在比喻中書寫測試,在測試的推動下產生代碼,用代碼回應設計。
第13章 完成 61
步調已經開始加快,編寫測試用例,迫使開發(fā)往前走,而不要往后退。
第14章 變化 67
TDD不分測試和“實驗”,本章寫了一個測試程序來核實有關Java語言的推斷。同時引入了一個幫助類,沒有對其進行專門測試。
第15章 混合貨幣 73
重構產生了蝴蝶效應,引發(fā)了我們對設計的一系列修改,好在有測試,膽子比以前大多了。
第16章 抽象,最后的部分 77
整理前面所有章節(jié)所寫的這個例子——Money,根據編譯器留下的面包屑前進,放棄失敗的試驗。
第17章 貨幣實例回顧 81
計劃、測試、重構——程序員的三件法寶,熟練之后,讓TDD深入軟件開發(fā)的全過程,控制步調的大小,最后引入性能測試和可用性測試等其他測試類型。
第2部分 xUnit實例
第18章 xUnit入門 91
完全都以最小的步伐前進,為我們的測試框架做好準備,本章介紹的是一個難度稍大的例子。
第19章 設置表格 97
明確了編寫簡單的測試比測試的執(zhí)行性能更重要,本章測試并實現了setUp()。
第20章 后期整理 101
發(fā)現了一個問題,大膽地修復它,不要回退。本章測試并實現了tearDown()。
第21章 計數 105
本章引入了測試結果TestResult類。
第22章 失敗處理 109
事實證明我們把大規(guī)模的測試留在后面,先完成小規(guī)模的測試是無比正確的。
第23章 如何組成Suite 113
本章完成了TestSuite類,改變了run方法的接口。
第24章 xUnit實例回顧 119
我們已經實現了xUnit,可以進而實現xUnit的GUI。但是xUnit的精髓在于簡單和完全控制。
第3部分 測試驅動開發(fā)模式
第25章 測試驅動開發(fā)的模式 123
不能用“我們沒有時間去運行測試,發(fā)布軟件后再說吧”這樣的話麻痹自己,要堅定測試的決心。此外,如何選擇測試數據十分重要。
第26章 紅色進度條模式 133
本章這些模式是關于什么時候寫測試、在哪里寫測試以及什么時候停止寫測試的。
第27章 測試模式 143
本章這些模式是關于如何把測試寫出技術、寫出水平、寫出道理的。
第28章 綠色進度條測試 151
讓測試盡快運行的三件法寶——偽實現、三角法、顯明實現。
第29章 xUnit模式 157
本章這些模式是關于xUnit如何工作的。
第30章 設計模式 165
本章這些模式是“設計模式”在本書中的一個縮影。
第31章 重構 181
本章這些模式是“重構”在本書中的一個縮影。與第30章一樣,這些不僅有助于我們編寫測試用例,也能應用在我們編寫的其他代碼上。
第32章 駕馭TDD 193
這是全書最重要的一章,掌握TDD的關鍵所在。我們要做的不僅僅是一個TDD的愛好者和倡導者,我們要做的是真正在實踐中用到TDD。這也是全書最精彩的一章,可以從中讀到大師在面對軟件過程改進的困難時所采用的心態(tài)、戰(zhàn)略、信念和手段。作為全書的升華,我們應該反復讀,用心品。
附錄I 影響圖 207
附錄II Fibonacci實例 211
后記 215
索引 217
附注A 注釋關鍵點匯總 221
附注B xUnit實例的Java版本 223