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