本節書摘來自華章出版社《有效的單元測試》一書中的第2章,第2.6節,作者 (芬)lasse koskela,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視
我說的測試替身是什麼?如果你的程式員工具箱中沒有測試替身,你就錯過了測試的許多功能。測試替身是程式員熟知的stub(樁)、fake(僞造對象)、mock(模拟對象)的總稱。它們本質上是為了測試目的、用于替換真實協作者的對象,如圖2.4所示。
你可以說測試替身是測試感染的程式員的最佳夥伴。因為它們促進了許多改進并為我們提供許多新工具,如:
通過簡化要執行的代碼來加速執行測試
模拟難以出現的異常情況
觀察那些對測試代碼不可見的狀态和互動
關于測試替身還有很多要說的,下一章将詳細讨論這一話題。但測試替身并不是行業中編寫自動化測試的僅有工具。
行業中最基本的工具或許就是測試架構了,比如junit。我仍然記得最初如願以償地讓代碼工作起來的時光。每當程式出錯卡住了,我就會取消好幾條語句用于向控制台輸出,然後重新開機程式,這樣我就能通過分析控制台輸出來找出失敗的位置和原因。
職業生涯最初幾個月,我見到商用軟體開發者也在用同樣的方式工作。與利用junit之類的工具編寫自動化、可重複的測試相比,我相信我不用指出那樣做有多浪費和多不專業。
除了合适的測試架構和測試替身之外,在編寫自動化測試的前三樣工具中還包括另一種——建構工具。無論你的建構過程是怎樣的,建構腳本中用到哪種工具或技術,都沒理由不将自動化測試內建到建構中。