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