2009-10-28 100 views
0

我們有保存文件的代碼,我想在測試過程中檢查文件的內容。 不過,我覺得,這樣的情景將最好的,如果我的抽象的文件持久性操作下面的接口實現:測試基於持久性的文件

public interface IFilePersist 
{ 
    void Save(XXX, FileLocation); 
} 

在單元測試中,我將注入,將檢查內容,並在生產中的界面將實際模擬堅持正確的位置。

這是開銷嗎?這種做法是否常用? 對於數據庫相關的操作,這種操作是微不足道的,並且一直使用。

回答

1

是的,這是一種方法,如果你想減少創建一個跟蹤模擬對象的開銷,你也可以做一個局部重寫的方法,如果可能的話。我不知道你使用的是什麼語言,但在Java中的本地覆蓋是這樣的:「嗨!」

// actual class 
public class SomeClass { 
    public void method() { 
     System.out.println("Hello!"); 
    } 
} 

// creating the class in test 

SomeClass c = new SomeClass() { 
public void method() { 
     System.out.println("Hi!"); 
    }  
}; 

現在你的類實際打印當m()被調用時,因爲它在匿名內部類中被覆蓋,而實際生產類仍然繼續打印「Hello!」。

1

是的,將單元測試與文件系統隔離是很好的做法。首先是因爲文件系統訪問比內存訪問慢。然後可以遇到其他問題(權限,缺少路徑,FS已滿或未裝入...)。

文件系統上的真實持久性應通過集成測試進行測試。