內容簡介
測試驅動開發(TDD)是近年來“敏捷革命”中最熱的話題之一,但是,市面上鮮見與此相關的有深度的作品。這本書的出版填補了這個空白,滿足了眾多一執行緒序員的需要。作者DavisAstels將這本書看作是KentBeck的經典作品《TestDrivenDevelopmentByExample》(英文影印版及中文版由中國電力出版社出版)的補充,重點闡述利用TDD開發所必要的技術和工具上,因此對實際開發更具實用性。
本書共分四部分。首先介紹了與TDD有關的基本主題,例如重構、意圖導向編程(programmingbyintention),當然還有TDD背後的原理剖析。接著深入分析了一些工具和技術,例如JUNIT、模擬對象(mockobjects)。第三部分主要講解如何將TDD套用到一個真實Java項目,這是本書的精華所在,作者親自帶你進入TDD世界,告訴你如何將看似複雜的“測試為先”在項目開發中盡情演繹。第四部分逐一概述了xUnit家族成員,如RUBYUNIT、SUNIT等。附錄包含極限編程和敏捷開發的入門材料,以及一些線上資源。
本書還包含了大量練習題並附有詳盡的參考答案,以方便讀者的學習,加深讀者對本書內容的理解。
著名的敏捷開發專家DaveAstels通過一個從頭至尾使用JavaJ和Unit測試框架創建的項目,向你展示了TDD的精妙之處。你將會領悟到“測試為先”的工作機理,它之所以成為一種有效開發方法的原因,使用過程中將會碰到的困難以及如何在現實中取得TDD所許諾的一切。
·最具實用性!書中遍布了可下載的示例代碼、練習題以及網上資源連結
·介紹強大的TDD工具和技術——包括關鍵的JUnit擴展,相關內容由它們的創建者(ScottAmbler、TimBacon、MikeBowler、MikeClark、BryanDollery、JamesNewkirk、BobPayne、KayPentacost和JensUwePipka)撰寫。
作者簡介
DavidAstels早在1985年就開始編寫軟體,涉及領域從嵌入式環境控制到智慧財產權保護系統,直到電能交易系統。他創建了Adaption,專門提供極限編程(XP)和軟體工藝(SoftwareCraftsmanship)方面的諮詢、培訓、指導和編程業務。他從事TheCoadLetter中TDD一版的編輯工作,並且在一些最為重要的有關極限編程和敏捷過程的大會上發表演講。同時他也是《APracticalGuidetoeXtremePronramming》(PrecticeHallPTR)作者之一。
目錄
序言
前言
第1部分背景知識介紹
第1章測試驅動開發
什麼是測試驅動開發?
讓計算機來告訴你
一個簡短的例子
小節
第2章重構
什麼是重構?
什麼時候進行重構
如何重構
一些重要的重構方法
通過重構來引入模式
小節
第3章意圖導向的編程
名字
簡單
要做有根據的假設
如何進行意圖導向的編程
“無需注釋”
小節
第2部分工具與技術
第4章JUnit
體系結構概覽
斷言
編寫一個測試用例(TestCase)
運行測試
使用setUp()和tearDown()
使用TestSuite()
相互關係
測試的歸屬問題
一些建議
小節
第5章JUnit的擴展(extensions)
標準擴展
使用MockObjects補充的斷言
使用junitperf來來測試性能與可伸縮性
DaedalosJUnit擴展
使用xmlUnit來編寫基於XML的測試
gargoyle軟體公司的JUnit擴展
第6章與JUnit有關的工具
NoUnit
Clover
Eclipse
IDEA
第7章模擬對象(MockObjects)
模擬對象
例子解說
模擬對象的用途
如果能這樣該有多好?
一個普通的例子
MockObjects框架
MockMaker
EasyMock
小節
第8章以測試優先的方式開發一個GUI套用
例子
AWT機器人
蠻力測試(BruteForce)
JFCUnit
超瘦(Ultru-Thin)GUI
小節
第3部分一個徹頭徹尾的採用TDD開發的Java軟體項目
第9章項目描述
概述
用戶描述及相關任務
第10章電影列表
為電影製作一個容器
為電影列表創建GUI
通過GUI增加電影
回顧
第11章可以為電影更名
支持對電影名的編輯
對電影更名的GUI
回顧
第12章電影是唯一的
電影是唯一的
發現不唯一時的出錯信息
回顧
第13章評分(ratings)
給電影打分
在GUI中顯示評分
對評分進行編輯
回顧
第14章類別
增加一種類別
在GUI中顯示類別
提供可供選擇的類別
回顧
第15章根據類別進行篩選
獲得基於類別的子列表
支持一種稱做ALL(所有)的類別
在GUI上添加類別選擇器
處理電影類別的變更
界面修整
回顧
第16章持續性存儲(persistence)
將數據輸出到平直檔案中
GUI中的Save-As選單項
GUI中的Save選單項
從平直檔案中讀取數據
載入到GUI中
回顧
第17章排序
電影比較
對電影列表進行排序
從MovieListEditor中獲取排序後的列表
在GUI中增加排序操作
回顧
第18章多重評分
多重評分
評分來源
修正後的持續性存儲
在GUI中顯示電影的多重評分
在GUI中添加增加評分的功能
刪除單一評分域
回顧
第19章評論
為評分附加評論
保存評論
載入評論
顯示評論
增加評論
回顧
第20章項目回顧
設計
測試代碼vs.套用代碼
測試質量
模擬對象的使用
總體評述
調試
測試清單
小節
第4部分xUnit一族
第21章RUBYUNIT
框架描述
範例
第22章SUNIT
框架描述
範例
第23章CppUnit
框架描述
範例
第24章Nunit
框架描述
範例
第25章PYUNIT
框架描述
範例
第26章VBUNIT
框架描述
範例
附錄A極限編程
敏捷革命
極限編程
四種變化量(TheFourVariables)
價值觀(Values)
實踐方法(Practices)
小節
附錄B敏捷建模
與建模有關的荒誕言論
敏捷建模(AM)導論
什麼是敏捷模型?
附錄C在線上資源
論壇
與敏捷建模有關的信息
與極限編程有關的信息
與JUnit有關的軟體
與JUnit有關的信息
各種工具
XUnit家族的其他成員
相關公司
雜類
附錄D練習答案
參考文獻