2009-10-28 97 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已满或未装入...)。

文件系统上的真实持久性应通过集成测试进行测试。