Pragmatic TDD:以DDD寫出鬆散耦合、文件化和高品質的程式碼
Pragmatic Test-Driven Development in C# and .NET
使用C#和.NET的工具與函式庫
測試驅動開發(TDD)是一種宣言(manifesto),強調在逐步為產品增加功能時,你應該先從單元測試(unit test)開始。現今的專案範本(project template)預設都含有單元測試,而單元測試已成為預期會被實作的重要任務。因此,在許多職位需求中,你會毫不意外地看到TDD、單元測試等關鍵字,而TDD和單元測試亦成為面試、coding挑戰和程式競賽中的重要考題。採用TDD,不僅能強化良好的設計實踐,更能加速你提升技能,成為優秀程式設計架構師(coding architect)。
本書超越理論探討,專注於讓你透過實用的框架,如ASP.NET Core和Entity Framework,在實際環境中熟練應用TDD。從基礎知識開始,本書將指導你使用Visual Studio 2022建立一個服務預訂的網頁應用程式。為了更貼近真實的工作情境,你將使用EF、SQL Server和Cosmos,並運用各種設計模式,包括資源庫(repository)、服務(service)、建造者(builder)等。同時,本書也會介紹領域驅動設計(DDD),以及其他軟體設計最佳實踐,如SOLID和FIRSTHAND等。
讀完本書,你將建立足夠的信心來主導TDD的實作。此外,你也將掌握有力的商業和技術案例,可在向管理階層或同事展示單元測試或推動TDD時使用。藉由本書的指引,你將更有把握成為引領TDD實踐的領航者,並在軟體設計領域中脫穎而出。
目標讀者
本書適合那些希望借助TDD的力量,來開發高品質軟體的中高階.NET開發者。假設你已經掌握OOP(物件導向程式設計)及C#程式設計概念的基礎知識,可是你對TDD或單元測試並不了解,本書將深入介紹並探討所有TDD與單元測試的觀念。對於想要從頭開始建置以TDD為基礎的應用程式,或計畫要在自己的組織內部引入單元測試的開發者來說,本書會是非常實用的指南。
【下載範例程式檔案】
你可以從GitHub下載本書的範例程式碼,如果程式碼有更新,作者也會直接更新在儲存庫上:
github.com/PacktPublishing/Pragmatic-Test-Driven-Development-in-C-Sharp-and-.NET
【下載本書的彩色圖片】
本書使用的彩色截圖和圖表,可以在此下載PDF檔案:
packt.link/OzRlM
本書特色
★使用xUnit編寫單元測試,並掌握相依注入的技巧
★使用NSubstitute實作測試替身,並進行mocking(模擬化)
★結合DDD與最佳實踐,以TDD的風格撰寫單元測試
★將TDD與ASP.NET API、Entity Framework和資料庫結合使用
★透過探索GitHub的持續整合更上一層樓
★探索更進階的mocking使用情境
★在你的公司和團隊中積極推動TDD和單元測試
Pragmatic TDD:以DDD寫出鬆散耦合、文件化和高品質的程式碼
內容描述
目錄大綱
Part 1:TDD的基礎入門
Chapter 01:撰寫你的第一個TDD實作
Chapter 02:藉由實際例子了解相依注入
Chapter 03:單元測試入門
Chapter 04:實際在單元測試中使用測試替身
Chapter 05:解說測試驅動開發
Chapter 06:TDD的FIRSTHAND準則
Part 2:使用TDD建立應用程式
Chapter 07:領域驅動設計的實務觀點
Chapter 08:設計一個服務預訂應用程式
Chapter 09:使用Entity Framework和關聯式資料庫建置服務預訂應用程式
Chapter 10:使用資源庫和文件式資料庫建置服務預訂應用程式
Part 3:將TDD應用於你的專案
Chapter 11:使用GitHub Actions實作持續整合
Chapter 12:處理棕地專案
Chapter 13:推行TDD的紛雜繁擾之處
Appendix A:單元測試相關的常用函式庫
Appendix B:進階的Mocking使用情境
作者介紹
作者簡介
Adam Tibi
Adam Tibi是一位居住在倫敦的軟體顧問,他在.NET、Python、Microsoft產品方案(技術堆疊)以及Azure等領域,擁有超過22年的豐富經歷。此外,他在團隊指導、架構設計、推廣敏捷以及良好的軟體開發實踐,當然還有寫程式等方面,也有深厚造詣。他曾在Shell、Lloyds Bank、Lloyd's of London、Willis Towers Watson等藍籌公司(blue-chip firm)和多家新創公司擔任顧問。身為一位顧問,他面對多樣化的產業客戶組合,深刻體會到TDD的紛亂難懂之處,他把這些寶貴的知識和經驗融入到了這本著作當中。
譯者簡介
莊志弘
莊志弘是「軟體主廚的程式料理廚房」部落格(dotblogs.com.tw/supershowwei)及「軟體廚房」粉絲團(www.facebook.com/appcookhouse)的經營者,至今(2023年)連續七次當選微軟最有價值專家。軟體開發的生涯從.NET 1.1開始,在.NET生態圈的開發經驗將近20年,曾經服務於國際貿易、系統整合、傳播媒體、投資顧問等行業。2021年創辦了「主廚的軟體廚房有限公司」,提供軟體專案開發、顧問等服務,懷抱著為各種問題找出 Best Practice 的夢想持續地在IT這條路上摸索著,同時也是敏捷開發的信仰者。