.NET單元測試藝術(shù)

出版時(shí)間:2012-1  出版社:清華大學(xué)出版社  作者:奧西洛夫  頁數(shù):297  
Tag標(biāo)簽:無  

內(nèi)容概要

  《.NET單元測試藝術(shù)》針對(duì)這個(gè)重要主題展開討論,引導(dǎo)讀者從簡單的測試開始,逐漸過渡到如何寫出可維護(hù)、可讀、可信賴的測試。同時(shí),還涉及mock,stub和框架(如Typemock
Isolator和Rhino
Mocks)等高級(jí)主題,旨在幫助讀者逐步掌握高級(jí)的測試模式和結(jié)構(gòu),高效地為遺留代碼和甚至根本不可測試的代碼編寫測試。書中還討論了測試數(shù)據(jù)庫時(shí)需要的工具和其他技術(shù)。本書為廣大.NET開發(fā)人員而寫,但其他讀者也可以從中受益。

作者簡介

作者:(以色列)奧西洛夫(Roy Osherove) 譯者:張博超 張昌貴 李丁山 注釋 解說詞:滕振宇?yuàn)W西洛夫,Roy Osherove,Typemock首席架構(gòu)師,ALT.NET創(chuàng)辦人。在全球各地主要從事單元測試和測試驅(qū)動(dòng)開發(fā)的顧問和培訓(xùn)工作。他也是TechEd和JAOO等國際性技術(shù)大會(huì)的明星發(fā)言人。

書籍目錄

《.net單元測試藝術(shù)》
第i部分 入 門
第1章 單元測試的基本知識(shí)
1.1 單元測試——傳統(tǒng)定義
1.1.1 編寫“優(yōu)秀單元測試”的重要性
1.1.2 我們都寫過單元測試(或多或少)
1.2 優(yōu)秀單元測試的特性
1.3 集成測試
1.4 優(yōu)秀的單元測試——定義
1.5 一個(gè)簡單的單元測試實(shí)例
1.6 測試驅(qū)動(dòng)開發(fā)
1.7 小結(jié)
第2章 第一個(gè)單元測試
2.1 單元測試框架
2.1.1 單元測試框架的優(yōu)勢提供了什么
2.1.2 xunit測試框架
2.2 logan項(xiàng)目的介紹
2.3 使用nunit的第一步
2.3.1 安裝nunit
2.3.2 加載解決方案
.2.3.3 在代碼中使用nunit特性
2.4 編寫第一個(gè)測試
2.4.1 assert類
2.4.2 用nunit運(yùn)行我們的第一個(gè)測試
2.4.3 修正代碼讓測試通過
2.4.4 從紅色到綠色
2.5 更多nunit特性
2.5.1 setup和teardown
2.5.2 驗(yàn)證預(yù)期的異常
2.5.3 忽略測試
2.5.4 設(shè)置測試類別
2.6 針對(duì)狀態(tài)的間接測試
2.7 小結(jié)
第ii部分 核 心 技 術(shù)
第3章 使用樁對(duì)象解除依賴
3.1 樁對(duì)象
3.2 發(fā)現(xiàn)logan對(duì)文件系統(tǒng)的依賴
3.3 確認(rèn)簡化loganalyzer測試的方法
3.4 重構(gòu)設(shè)計(jì)增強(qiáng)了可測性
3.4.1 抽取接口,以允許替換底層實(shí)現(xiàn)
3.4.2 在被測類中注入樁對(duì)象
3.4.3 在構(gòu)造函數(shù)級(jí)別上接收一個(gè)接口(構(gòu)造函數(shù)注入)
3.4.4 接收一個(gè)接口作為屬性的get或set的類型
3.4.5 在調(diào)用方法之前獲取一個(gè)樁對(duì)象
3.5 重構(gòu)技術(shù)的變種
3.6 解決封裝問題
3.6.1 使用internal和[internalvisibleto]
3.6.2 利用[conditional]屬性標(biāo)簽
3.6.3 使用#if和#endif的條件編譯
3.7 小結(jié)
第4章 用模擬對(duì)象做交互測試
4.1 基于狀態(tài)的測試和交互測試
4.2 模擬對(duì)象和樁對(duì)象之間的區(qū)別
4.3 簡單的手寫模擬對(duì)象例子
4.4 同時(shí)使用模擬對(duì)象和樁對(duì)象
4.5 一個(gè)測試一個(gè)模擬對(duì)象
4.6 樁鏈:產(chǎn)生模擬對(duì)象或其他樁的一批樁對(duì)象
4.7 手寫模擬對(duì)象和樁對(duì)象的問題
4.8 小結(jié)
第5章 隔離(模擬對(duì)象)框架
5.1 為什么使用隔離框架
5.2 動(dòng)態(tài)創(chuàng)建偽對(duì)象
5.2.1 在測試中引入rhino mocks
5.2.2 使用動(dòng)態(tài)模擬對(duì)象替換手寫模擬對(duì)象
5.3 嚴(yán)格模擬對(duì)象與非嚴(yán)格模擬對(duì)象
5.3.1 嚴(yán)格模擬對(duì)象
5.3.2 非嚴(yán)格模擬對(duì)象
5.4 從偽對(duì)象返回值
5.5 用隔離框架創(chuàng)建智能樁對(duì)象
5.5.1 在rhino mocks框架中創(chuàng)建樁對(duì)象
5.5.2 結(jié)合使用動(dòng)態(tài)樁對(duì)象和模擬對(duì)象
5.6 模擬對(duì)象和樁對(duì)象的參數(shù)約束
5.6.1 用字符串約束檢查參數(shù)
5.6.2 使用約束檢驗(yàn)參數(shù)對(duì)象的屬性
5.6.3 執(zhí)行回調(diào)檢驗(yàn)參數(shù)
5.7 測試與事件相關(guān)的活動(dòng)
5.7.1 測試一個(gè)事件已被訂閱
5.7.2 在模擬對(duì)象和樁對(duì)象中觸發(fā)事件
5.7.3 測試一個(gè)事件是否被觸發(fā)
5.8 隔離框架中的設(shè)置-操作-斷言語法
5.9 .net中現(xiàn)有的隔離框架
5.9.1 nunit.mocks
5.9.2 nmock
5.9.3 nmock2
5.9.4 typemock isolator
5.9.5 rhino mocks
5.9.6 moq框架
5.10 隔離框架的優(yōu)勢
5.11 避免使用隔離框架時(shí)的陷阱
5.11.1 測試代碼缺乏可讀性
5.11.2 對(duì)錯(cuò)誤的事情做驗(yàn)證
5.11.3 一個(gè)測試包含多個(gè)模擬對(duì)象
5.11.4 測試的細(xì)節(jié)太多
5.12 小結(jié)
第iii部分 測試的代碼
第6章 測試層次及組織
6.1 讓自動(dòng)化構(gòu)建運(yùn)行自動(dòng)化測試
6.1.1 自動(dòng)構(gòu)建剖析
6.1.2 觸發(fā)構(gòu)建和持續(xù)集成
6.1.3 自動(dòng)化構(gòu)建類型
6.2 根據(jù)速度和類型組織測試
6.2.1 分離單元測試與集成測試的人為因素
6.2.2 綠色安全區(qū)域
6.3 確保測試在代碼庫中
6.4 在測試類和被測代碼之間建立映射
6.4.1 映射測試到項(xiàng)目
6.4.2 映射測試到類
6.4.3 映射測試到方法
6.5 為應(yīng)用程序打造測試api
6.5.1 使用測試類的繼承模式
6.5.2 新建測試工具類和方法
6.5.3 讓程序員知道你的api
6.6 小結(jié)
第7章 優(yōu)秀單元測試的支柱
7.1 編寫可信賴的測試
7.1.1 決定何時(shí)刪除或更改測試
7.1.2 避免測試的邏輯
7.1.3 只測試一件事情
7.1.4 讓測試容易運(yùn)行
7.1.5 確保測試覆蓋率
7.2 編寫可維護(hù)的測試
7.2.1 測試私有的或者受保護(hù)的方法
7.2.2 去除重復(fù)代碼
7.2.3 讓setup方法可維護(hù)
7.2.4 實(shí)施測試隔離
7.2.5 避免多個(gè)斷言
7.2.6 避免測試同一個(gè)對(duì)象的多個(gè)方面
7.2.7 避免在測試?yán)镞^度關(guān)注細(xì)節(jié)
7.3 編寫可讀的測試
7.3.1 為單元測試命名
7.3.2 為變量命名
7.3.3 讓斷言有意義
7.3.4 將斷言和動(dòng)作分離
7.3.5 setup和teardown
7.4 小結(jié)
第iv部分 設(shè)計(jì)與流程
第8章 在組織中引入單元測試
8.1 怎樣成為變革推動(dòng)者
8.1.1 備戰(zhàn)棘手問題
8.1.2 說服內(nèi)部人士:擁護(hù)者與阻礙者
8.1.3 洞察切入機(jī)會(huì)
8.2 成功之路
8.2.1 游擊策略(自下而上)
8.2.2 說服管理層(自上而下)
8.2.3 從外面找一個(gè)專家
8.2.4 讓過程可見
8.2.5 鎖定目標(biāo)
8.2.6 意識(shí)到即將面對(duì)的阻礙
8.3 失敗之路
8.3.1 缺乏驅(qū)動(dòng)力
8.3.2 缺乏政治上的支持
8.3.3 不好的實(shí)施和第一印象
8.3.4 缺乏團(tuán)隊(duì)支持
8.4 棘手的問題及其答案
8.4.1 在現(xiàn)有的流程上會(huì)增加多少時(shí)間
8.4.2 測試人員的工作會(huì)因此受到威脅嗎
8.4.3 怎么知道這確實(shí)可行呢
8.4.4 有什么可以證明單元測試的好處
8.4.5 為什么測試部門還是能找到缺陷
8.4.6 我們有很多沒有測試的代碼:該從哪里開始呢
8.4.7 使用多種語言開發(fā):單元測試適用嗎
8.4.8 如果是軟硬件結(jié)合的開發(fā),該怎么辦
8.4.9 怎么知道測試本身是否有缺陷
8.4.10 我的調(diào)試器顯示代碼可以正常工作:為什么還需要測試
8.4.11 必須用tdd的方式來編碼嗎
8.5 小結(jié)
第9章 修改遺留代碼
9.1 從哪里開始添加測試?
9.2 確定抉擇策略
9.2.1 容易優(yōu)先策略的優(yōu)缺點(diǎn)
9.2.2 困難優(yōu)先策略的優(yōu)缺點(diǎn)
9.3 在重構(gòu)前寫集成測試
9.4 重要的遺留代碼單元測試工具
9.4.1 使用typemock isolator輕松隔離依賴項(xiàng)
9.4.2 使用depender找出可測性問題
9.4.3 在java遺留代碼里使用jmockit
9.4.4 重構(gòu)java代碼時(shí)使用vise
9.4.5 使用fitnesse在重構(gòu)前做驗(yàn)收測試
9.4.6 閱讀michael feathers的關(guān)于遺留代碼的書
9.4.7 使用ndepend來審查生產(chǎn)代碼
9.4.8 使用resharper瀏覽和重構(gòu)生產(chǎn)代碼
9.4.9 使用simian來檢測重復(fù)代碼(和缺陷)
9.4.10 使用typemock racer來檢測線程問題
9.5 小結(jié)
附錄a 設(shè)計(jì)與可測試性
附錄b 工具和框架

章節(jié)摘錄

版權(quán)頁:插圖:開始推行變革時(shí),通過調(diào)查辨別出你認(rèn)為對(duì)自己有幫助的人。他們會(huì)是你的擁護(hù)者。通常他們是早期采用者,或者是那些愿意接受新事物、愿意嘗試你倡議的人.他們可能半數(shù)已經(jīng)被說服,但正在尋找開始變革的推動(dòng)力。他們甚至可能已經(jīng)嘗試過但是失敗了。趕在別人之前接近這些人,并針對(duì)你要做的事情向他們請(qǐng)教。他們可能會(huì)告訴你一些你未曾考慮過的事情:可以從哪些團(tuán)隊(duì)開始,哪里的人更容易接受這項(xiàng)變革。甚至他們從自己的經(jīng)驗(yàn)角度出發(fā),告訴你需要注意哪些事項(xiàng)。通過接近這些人,有助于確保他們成為變革過程的參與者。覺得自己是參與者,通常會(huì)努力幫助實(shí)現(xiàn)過程。讓他們成為你的擁護(hù)者;問他們是否可以幫助你,是否可以成為回答人們問題的人。讓他們?yōu)榇俗龊脺?zhǔn)備。阻礙者接下來,辨別出阻礙者。這些人很可能在組織里抵制你倡導(dǎo)的變革。例如,某個(gè)管理人員可能反對(duì)添加單元測試,宣稱單元測試會(huì)增加太多開發(fā)時(shí)間,并增加需要維護(hù)的代碼量。通過在過程中給這些人(至少可以是那些有意愿并且有能力的人)一個(gè)正面角色,讓他們成為過程的參與者,而不是過程的抵制者。

媒體關(guān)注與評(píng)論

“這是我印象最深的TDD(測試驅(qū)動(dòng)開發(fā))最佳圖書。它從最基礎(chǔ)的講起,通過嚴(yán)謹(jǐn)、客觀的方式自然而然地過渡到高級(jí)主題。”  ——Robert C.Martin(B。b大叔),  《敏捷軟件開發(fā)》作者“若干年前就應(yīng)該面世的重要圖書.”  ——Michael Feathers,  《修改遺留代碼的藝術(shù)》作者“《.NET單元測試藝術(shù)》講透了單元測試的方方面面,甚至論及單元測試的詬病?!薄  狥ranco  Lombardo,  Molteni  InformatiCa“Roy深諳測試之道。”  ——Wendy Friedlander,Agile Solutions“涵括單元測試的理論與實(shí)踐?!薄  狥rancesco Goggi,軟件工程師“精心打造的大師之作,凝聚著單元測試的精髓。Bravo,Bravo,BraVo!”  ——Mohammad Azam,微軟最有價(jià)值專家(Microsoft MVP),HighOnCoding“出神入化!”  ——Gabor Paller,OnRelay公司“以前針對(duì)單元測試的書都足寫給外行看熱鬧的,但這本書是寫給專業(yè)人員閱讀和參考的?!薄  狫osh  Cronemayer,  ThoughWorks“您會(huì)發(fā)現(xiàn),這本書包含單元測試方方面面的內(nèi)容。我愛看涉及測試代碼組織與重構(gòu)這一章。這是幫助您的團(tuán)隊(duì)/公司擁抱單元測試的理想圖書,可謂字字珠璣?!薄  狝lessandro Gallo,ASP.NET Ajax in Action作者“初學(xué)者可以很容易從這本書中學(xué)會(huì)開始寫單元測試,高手也可以學(xué)到提高技能的一些思路和方法?!薄  狵ent Beck

編輯推薦

《.NET單元測試藝術(shù)》編輯推薦:以正確的方式進(jìn)行單元測試,是決定項(xiàng)目成敗的關(guān)鍵,是決定代碼維護(hù)性強(qiáng)弱的分水嶺,是決定你加班到深夜兩點(diǎn)還是準(zhǔn)點(diǎn)下班回家晚餐的重要因素。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    .NET單元測試藝術(shù) PDF格式下載


用戶評(píng)論 (總計(jì)24條)

 
 

  •   比較多涉及****單元測試中的方法,而不是過多的涉及測試工具本身,很好!
  •   本書是我讀過的關(guān)于單元測試介紹最詳細(xì)的,物有所值。
  •   內(nèi)容挺好,正是需要的。
  •   內(nèi)容還不錯(cuò),就是實(shí)例介紹時(shí)只用文字描述了一個(gè)過程,有時(shí)還得上網(wǎng)查相關(guān)資料結(jié)合的看,但內(nèi)容也挺不錯(cuò)的
  •   書的內(nèi)容大致看了一下,挺不錯(cuò)的。
  •   值得推薦,比較入門
  •   更清晰的認(rèn)識(shí)到他的重要性
  •   想學(xué)習(xí)一下單元測試的方法,看完感覺還沒入門。
  •   理念不錯(cuò),不僅能看到測試藝術(shù),還能反推到編程。
  •   前面簡單 后面讀起來吃力
  •   書剛到,還沒看!不過很期待!
  •   還不錯(cuò),印刷質(zhì)量還行。
  •   值得拜讀?。。?!
  •   書皮折了,還有土,當(dāng)當(dāng)?shù)谝淮钨I到這樣的書
  •   可惜了點(diǎn)
  •   頁變空白很大,浪費(fèi)紙張
  •   看了目錄感覺不錯(cuò)。希望內(nèi)容充實(shí),書很輕。
  •   適合使用net的人看,感謝。
  •   .NET單元測試藝術(shù)
  •   書很不多,能學(xué)到很多東西
  •   相當(dāng)好的測試書
  •   很好的書,很滿意,適合學(xué)習(xí)。
  •   算得上是經(jīng)典吧
  •   說真的還沒有時(shí)間看呢
 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7