星期一, 6月 05, 2006

Mock Object Pattern

Mock字面上的意思就是膺品,也就是假貨。Mock Object是產生一個與原來class相同的物件。

用途是在Unit Test時,測待class可能有相依的元件,在不易使用或呼叫的情況下,使用Mock Object取代這些元件;例如Business Logic元件會呼叫DAO元件,在此時使用Mock Object可以省掉許多麻煩與時間,直接將值回傳,避免資料庫裏的資料與當初設定時不同。

範例:

原來class:
publci class Transaction
{ ... }
Mock Object class:
private class MockTransaction extends Transaction
{ ...}

Mock Object就這麼簡單,可以提昇Unit Test的效率。
但隨著系統的發展及變更,Mock Object會跟著越來 越多,反而造成Mock Object維護不易,因此聰明的程序員就想出用AOP來節省時間,最後開發出Mock Object工具。

參考資料:
Unit testing with mock objects
MockObjects.com
Java:
EasyMock
MockCreator
jMock
Virtual Mock Objects using AspectJ with JUNIT
.Net:
Mock Objects to the Rescue! Test Your .NET Code with NMock
NMock

沒有留言: