測試問題域: Test Double, 以及為什么Mock之爭都爭錯了方向 - 切爾斯基 - 博客頻道 - CSDN.NET http://blog.csdn.net/chelsea/article/details/7176479
于是這里引入了新的問題: 手工編寫替身類太繁瑣了, 體力勞動, 重復代碼, 大量的測試用例要求大量的替身類. 尤其是測試交互的那些替身類, 要能夠記錄和斷言傳入的參數, 調用順序等. 為解決這些問題需要對替身類進行設計. 而人們發現主流語言Java, C#等提供的語言特性可以動態的生成這些替身類, 簡化手工操作和代碼量. 于是這類工具被制造出來, 稱為mock工具.
換言之, mock工具解決的不是測試中的依賴問題, 而是實現依賴的測試替身手工維護成本太高的問題. (只不過其中對"如何測試交互"那部分的支持被稱為mock對象而已)
第二種變化導致了mock的濫用. 是的, 強大的工具容易被濫用: 我能夠斷言交互順序不意味著所有的測試都需要斷言順序, 我能夠斷言參數不意味著所有的測試我都去斷言參數. 缺乏對應用場合的識別, 缺乏對系統的洞察, 導致大量脆弱的測試. 真正重要的是識別問題, 然后選擇合適的工具. Mock工具也都支持Dummy, Stub, Fake等應用場景, 不要浪費了這些功能.