2013-03-21 77 views
-1

我有一個需要使用Log4net進行日誌記錄的類。以下是兩個可能的解決方案,用於單元測試。通過依賴注入進行日誌記錄與單元測試的隱式依賴關係

解決方案1:

public class Car{ 
    ILog log; 
    public Car(ILog log){ 
    this.log = log 
    } 

    //use logging for other methods 
} 

解決方案2:

public class Car 
    ILog log = LogManager.GetLogger(typeof(Car)); 
    public Car(){ 
    } 

    //use logging for other methods 
} 

問題:

1)的方法是一般好?

2)對於解決方案2,我應該如何在單元測試中更換記錄器。

+1

更好的如何?這對我來說似乎是一個意見。我已經看到了兩種方式,我確信每個作者都是最好的。 – 2013-03-21 18:24:27

回答

1

您正在使用靜態工廠(LogManager),但非靜態工廠可能會更好。然後你可以傳入工廠本身,單元測試可以使用它創建自己的ILog對象。這使得它更容易模擬。

您仍然需要一種製造工廠的方法,但是您可以傳入一個儀器化的測試版本來幫助進行測試。

+0

使用Ctor依賴注入很容易理解和使用。但是它的下載方式是將其傳遞給每個實例。使用隱式依賴可能會導致下路。 – Pingpong 2013-03-21 21:11:32