Java 測試驅動開發 (Test-Driven Java Development) Java测试驱动开发

維克多·法西克 (Viktor Farcic), 阿列克斯·加西亞 (Alex Garcia)

買這商品的人也買了...

商品描述

《Java測試驅動開發》介紹如何將各種TDDzui佳實踐應用於Java開發,主要內容包括:用Java語言進行TDD會用到的各種工具和框架,所需環境搭建;通過實際應用程序,展示TDD優點及開發中應註意的主要問題;TDD是如何通過模擬內部和外部依賴來提升速度的;如何重構既有應用程序;詳細介紹所有TDDzui佳實踐。
《Java測試驅動開發》適合所有Java開發人員,也適合用其他語言編程的程序員瞭解TDD。

作者簡介

作者:[西]維克多·法西克阿列克斯·加西亞(Viktor Farcic、 Alex Garcia)譯者:袁國忠

Viktor Farcic 
資-深軟件架構師,Docker船長,Java開發專家,熱衷於測試驅動開發、行為驅動開發、持續集成、持續交付和持續部署。
他把多年經驗都分享在了博客上,深受讀者歡迎:http://TechnologyConversations.com。

Alex Garcia 
資-深Java程序員,敏捷實踐擁躉,熱衷於學習新語言、新範式、新框架。

目錄大綱

第1章為何要關心測試驅動開發1 
1.1為何要使用TDD1 
1.1.1理解TDD3 
1.1.2紅燈綠燈重構3 
1.1.3速度是關鍵4 
1.1.4TDD並非測試方法4 
1.2測試5 
1.2.1黑盒測試5 
1.2.2白盒測試5 
1.2.3質量檢查和質量保證的差別6 
1.2.4更好的測試6 
1.3模擬7 
1.4可執行的文檔7 
1.5無需調試9 
1.6小結9 

第2章工具、框架和環境10 
2.1Git10 
2.2虛擬機11 
2.2.1Vagrant11 
2.2.2Docker13 
2.3構建工具14 
2.4集成開發環境15 
2.5單元測試框架16 
2.5.1JUnit17 
2.5.2TestNG19 
2.6Hamcrest和AssertJ21 
2.6.1Hamcrest21 
2.6.2AssertJ22 
2.7代碼覆蓋率工具23 
2.8模擬框架24 
2.8.1Mockito26 
2.8.2EasyMock28 
2.8.3PowerMock29
2.9用戶界面測試29 
2.9.1Web測試框架30 
2.9.2Selenium30 
2.9.3Selenide31 
2.10行為驅動開發33 
2.10.1JBehave33 
2.10.2Cucumber35 
2.11小結37 

第3章紅燈綠燈重構——從失敗到
成功再到完美38 
3.1使用Gradle和JUnit搭建環境39 
3.2“紅燈綠燈重構”過程41 
3.2.1編寫一個測試41 
3.2.2運行所有測試並確認最後一個未通過41 
3.2.3編寫實現代碼42 
3.2.4運行所有測試42 
3.2 .5重構42 
3.2.6重複43 
3.3“井字遊戲”的需求43 
3.4開發“井字遊戲”43 
3.4.1需求144 
3.4.2需求249 
3.4.3需求352 
3.4.4需求457 
3.5代碼覆蓋率58 
3.6更多練習59 
3.7小結60 

第4章單元測試——專注於當下而非
過往61 
4.1單元測試61 
4.1.1何為單元測試62 
4.1.2為何要進行單元測試62 
4.1.3代碼重構62
4.1.4為何不只使用單元測試63 
4.2TDD中的單元測試64 
4.3TestNG64 
4.3.1註解@Test64 
4.3.2註解@BeforeSuite、@Be—foreTest、@BeforeGroups、@AfterGroups、@AfterTest和@AfterSuite65 
4.3.3註解@BeforeClass和@AfterClass65 
4.3.4註解@BeforeMethod和@AfterMethod66 
4.3.5註解參數@Test(enable=false)66 
4.3.6註解參數@Test(expected—Exceptions=SomeClass.class)66 
4.3.7TestNG和JUnit差別小結66 
4.4“遙控軍艦”的需求66 
4.5開發“遙控軍艦”67 
4.5.1創建項目67 
4.5.2輔助類69 
4.5.3需求169 
4.5.4需求272 
4.5.5需求374 
4.5.6需求475 
4.5.7需求577 
4.5.8需求680 
4.6小結81
 
第5章設計——難以測試說明設計
不佳82 
5.1為何要關心設計82 
5.2Connect484 
5.3完成Connect4實現後再測試85 
5.3.1需求185
5.3.2需求286 
5.3.3需求387 
5.3.4需求488 
5.3.5需求589 
5.3.6需求689 
5.3.7需求790 
5.3.8需求891 
5.4使用TDD實現Connect492 
5.4.1Hamcrest92 
5.4.2需求193 
5.4. 3需求293 
5.4.4需求396 
5.4.5需求497 
5.4.6需求599 
5.4.7需求699 
5.4.8需求7100 
5.4.9需求8101 
5.5小結103 

第6章模擬——消除外部依賴104 
6.1模擬104 
6.1 .1為何使用模擬對象105 
6.1.2術語106 
6.1.3模擬對象106 
6.2Mockito107 
6.3“井字遊戲”第二版的需求107 
6.4開發“井字遊戲”第二版107 
6.4.1需求1108 
6.4. 2需求2118 
6.5集成測試124 
6.5.1分離測試124 
6.5.2集成測試125 
6.6小結127 

第7章BDD——與整個團隊協作128 
7.1不同規範128
7.1.1文檔129 
7.1.2供程序員使用的文檔129 
7.1.3供非程序員使用的文檔130 
7.2行為驅動開發130 
7.2.1敘述131 
7.2.2場景132 
7.3書店應用程序的BDD故事133 
7.4 JBehave136 
7.4.1JBehave運行器136 
7.4.2待定步驟137 
7.4.3Selenium和Selenide138 
7.4.4JBehave步驟139 
7.4.5最後的驗證144 
7.5小結146 

第8章重構遺留代碼——使其重煥
青春147 
8.1遺留代碼147 
8.2編碼套路156 
8.2.1遺留代碼處理套路157 
8.2.2描述157 
8.2.3技術說明157 
8.2.4添加新功能157 
8.2.5黑盒測試還是尖峰衝擊測試157 
8.2.6初步調查158 
8.2.7應用遺留代碼修改算法161 
8.2.8提取並重寫調用166 
8.2.9消除狀態的“基本類型偏執”壞味170 
8.3小結173 

第9章功能開關——將未完成的功能
部署到生成環境175 
9.1持續集成、持續交付和持續部署175 
9.2功能開關177
9.3功能開關示例178 
9.3.1實現fibonacci服務181 
9.3.2使用模版引擎184 
9.4小結187 

第10章綜述188 
10.1TDD概要188 
10.2最佳實踐189 
10.2.1命名約定189 
10.2.2流程191 
10.2.3開發實踐192 
10.2.4工具195 
10.3這只是開始196 
10.4這並非終點196