2010-02-15 35 views
1

我在使用Mock Object模式在我的應用程序中對單元測試層進行測試。我面臨的問題是如何在不進行單元測試時從我的模擬對象切換到真實對象。使用模擬對象和實際對象切換項目的模式

我最初的反應是引用兩個庫(一個包含真實對象和一個包含真實對象),並使用conditional compilation symbols在兩個名稱空間之間切換。然而,這明顯要求項目在沒有UNITTEST符號的情況下(在通過單元測試之後)重建,以便重新引用真實對象。

有沒有實現這個目標的模式?

僅供參考,如果能提供任何好處,我的環境是c#2。

回答

7

你會想要查找dependency injection和對象應該通過構造函數接受它們的依賴關係的方式,而不是自己創建它們。

例如,對比度:

public MyClass() 
{ 
    myDBConnection = new SqlConnection(); 
} 

VS

public MyClass(IDbConnection connection) 
{ 
    myDBConnection = connection; 
} 

在,你可以通過在你的單元測試模擬數據庫連接,在實際代碼的第二傳遞真實的東西。