有關單元測試的幾個noob問題。卡住單元測試困境
比方說,我有一個類,每個方法我寫一堆單元測試。
,當我決定改變設計,使這個類應該不存在了,會發生什麼,但它的功能應該其他類中混合使用嗎?那麼所有的單元測試都會過時,對吧?對此我們無能爲力。
然後,如果我們改變設計經常,因爲它在實際發生時,我們應該基本上一遍又一遍寫相同的測試。我們如何避免這種情況?
人們可以通過單元測試只能石頭硬班避免這種情況,這永遠不會改變,和所有其餘依靠blackboxed集成測試,但是這是正確的做法?
有關單元測試的幾個noob問題。卡住單元測試困境
比方說,我有一個類,每個方法我寫一堆單元測試。
,當我決定改變設計,使這個類應該不存在了,會發生什麼,但它的功能應該其他類中混合使用嗎?那麼所有的單元測試都會過時,對吧?對此我們無能爲力。
然後,如果我們改變設計經常,因爲它在實際發生時,我們應該基本上一遍又一遍寫相同的測試。我們如何避免這種情況?
人們可以通過單元測試只能石頭硬班避免這種情況,這永遠不會改變,和所有其餘依靠blackboxed集成測試,但是這是正確的做法?
的基於固態要求所有好的設計首先不應該要求到Class
重大變化。
如果您需要經常更改並且您仍然希望採用Unit Testing
,那麼您沒有其他選擇,只能在每次進行更改時採取更難的單元測試方式。沒有例外。
您可以創建一個界面,該界面不會更改,而實現可以更改爲遵循您的類的規範。
但是在這種情況下,爲什麼不爲該類本身採用Facade的接口呢?
是不是正在使用外牆排序的黑匣子?如果是這樣的話,那麼不會將單元測試轉變爲集成測試,因爲您不關心實現? – preslavrachev 2012-01-11 13:15:57
是的,但我認爲這可能是你在 – 2012-01-11 14:27:25
後,我不知道什麼是允許的,什麼不是。我的意思是,在單元測試方面,我完全是一個noob,所以我不知道什麼樣的經驗法則可以說明你應該測試什麼以及如何測試。據我所知,UT全部是關於公開測試每個課程中每種方法的實施情況。 – preslavrachev 2012-01-11 15:11:49