下載地址:
第13章測(cè)試驅(qū)動(dòng)編程.rar? 或者?
下載TDD及它的優(yōu)點(diǎn)
?
??? 上面這種編程的方式,就叫“測(cè)試驅(qū)動(dòng)編程Test Driven Development (TDD)”,因?yàn)槲覀兛偸窃趯懻嬲a之前寫一個(gè)通不過(guò)的測(cè)試,然后再寫真正的代碼,讓測(cè)試通過(guò)。
??? 跟測(cè)試后行的開發(fā)方式相比,它有如下好處:
??????????????????????????????????????????????????????
??? 1.為了更容易的寫單元測(cè)試,我們會(huì)廣泛的使用接口(比如StudentRegistryChecker等)。這個(gè)會(huì)讓單元測(cè)試代碼很容易讀跟寫,因?yàn)闇y(cè)試代碼里面沒有多余的數(shù)據(jù)。如果我們不用TDD而是直接寫實(shí)現(xiàn)的話,我們經(jīng)常會(huì)使用現(xiàn)成的類(比如StudentSet),測(cè)試為了調(diào)用現(xiàn)成的類,就不得不創(chuàng)建很多多余的數(shù)據(jù),創(chuàng)建很巨型的對(duì)象,就像Student或者Course。
???
??? 2.因?yàn)閺V泛的使用接口,我們的類之間就不會(huì)藕合(比如EnrollmentSet就一點(diǎn)都不知道StudentSet的存在),因此重用性更好。
?
??? 3.寫單元測(cè)試的時(shí)候,很容易就可以為一個(gè)行為寫一個(gè)測(cè)試用例,讓它通過(guò),然后為另一種行為寫另一個(gè)測(cè)試用例。也就是說(shuō),整個(gè)任務(wù)會(huì)被劃分成很多小的任務(wù),獨(dú)立完成。如果我們不用TDD而直接實(shí)現(xiàn)的話,我們很容易就會(huì)同時(shí)把所有的行為都實(shí)現(xiàn)了。這樣花的時(shí)間長(zhǎng),而且在這相當(dāng)長(zhǎng)的時(shí)間里面,寫的代碼都是沒有測(cè)試過(guò),不能保證準(zhǔn)確性的。相反的,用TDD的話,我們只實(shí)現(xiàn)要測(cè)的行為的代碼。它只花費(fèi)很少的時(shí)間(幾分鐘),而且可以馬上測(cè)試。