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