昨天我們提到,只寫單元測試會導致測試沒法測出所有的可能問題,可以成功的減少自動測試的好處,降低系統好改的程度。
如果有人發現這件事情的話,要求要寫整合測試,也就是會將元件整合在一起,一次合併檢驗的測試。那麼,我們可以只寫整合測試,不寫任何的單元測試。
這樣一來,我們可以達到以下效果:
整合測試要一次測試相關的所有元件,撰寫的時候自然會牽涉更多的元件,進而提高了測試的複雜度,以及維護的難度。
如果有人提到這些測試很難維護,我們甚至都不用說些什麼,維護工程師很可能自己就受不了,提出希望可以移除測試的建議了。
整合測試關聯的元件比較多,所以相對來說,每個測試的運行時間都會更長。
測試運作越慢,就越讓人不想運作。隨著時間過去,就不會有人再注意自動測試了。
整合測試關聯的元件比較多,所以一旦某個測試出錯,你就得檢查該測試相關的所有元件。這是一個相當麻煩的事情,如果找了半天,結果是測試本身寫錯了,那就更氣人了。
這可以大幅的降低自動測試的好處,讓人不想繼續理會自動測試。
Laravel 的替身使用起來很方便,所以測試時,除了我們要測試的東西以外,包含 DTO 和包裝參數的類別,我們統統都使用替身。
這可以大大的提升閱讀該測試的難度,對寫出難以維護的測試很有幫助。