程式的感測和分離
May 17, 2022
類別的依賴會讓修改時假如的物件難以進行測試,當需要實例化一個物件時,其會需要存取其他類別的資訊,而該類別又需要建立其他類別,導致測試時牽涉太多的物件,不符合[[單元測試]]的測試精神,因而在測試前的解依賴便是必要的,我們需要將待測試的類別自相依的類別當中分離出來,才能夠安置測試。除此以外測試控制工具需要是可以觀測到被測試者的輸出結果,當這些結果不易被觀察到時,也需要進行解依賴。
可感測意味著可觀測的程式結果,而分離代表著該類別與其他的類別相依性不高容易透過[[介面提取]]或[[依賴注入]]等方法可以單獨抽離執行。
透過偽物件假裝與遺留程式碼合作
在依賴性高的程式碼中修改,為了能夠觀測被測試者的執行結果,在使用解依賴的技巧後,我們可以透過另外的程式碼來取代原目標對象的程式碼並透過他觀測結果是否正確,達到測試的目的並且可以放心的繼續修改,而這些取代性的程式便是[[偽物件]](fake object)。
除了偽物件外,[[仿物件]](mock object)也可以達到該效果,其中差異在於仿物件是在內部進行斷言檢查的物件,其好處在於仿物件著重盡量模擬真實目標物件的行為,被測試者可以將其當作真正的目標物件來使用,並且測試上我們可以告訴偽物件我們預期的執行結果,並要求其檢驗是否接收到正確的結果。
See Also
References
- Working with Legacy Code - Chapter 3