對(duì)于測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD),始終有一些迷惑,比如說(shuō),它的測(cè)試需要考慮完備性嗎,需要考慮覆蓋率嗎?等等此類(lèi)。今天從Javaeye中看到一句話,終于明白了。
“什么是TDD?TDD就是把你的需求用測(cè)試給描述出來(lái)。”
也就是說(shuō),TDD中的測(cè)試和一般意義上的單元測(cè)試并不一樣,盡管TDD中的測(cè)試有時(shí)也作為單元測(cè)試來(lái)使用,但它們是兩回事。(這里的需求,指的不是客戶需求,而是程序員的開(kāi)發(fā)需求)。
使用TDD時(shí),首先寫(xiě)的是測(cè)試,這時(shí)相應(yīng)代碼還沒(méi)有實(shí)現(xiàn),那么測(cè)試什么東西呢?所以說(shuō),寫(xiě)測(cè)試的過(guò)程,同時(shí)也是設(shè)計(jì)接口的過(guò)程。這和寫(xiě)單元測(cè)試的目的完全是不一樣的。
?。裕模倪€有一個(gè)額外的好處。大多數(shù)人都是懶的,不要指望所有的程序員在寫(xiě)完功能代碼后,再去編寫(xiě)相應(yīng)的單元測(cè)試。我覺(jué)得這個(gè)接口的實(shí)現(xiàn)沒(méi)有問(wèn)題,所以就不用測(cè)試。這種想法也很常見(jiàn)。所以一開(kāi)始就寫(xiě)下測(cè)試,可以杜絕后患。