2009-10-28 7 views
0

우리는 파일을 유지하는 코드가 있으며 테스트하는 동안 파일의 내용을 확인하고 싶습니다. 다음과 같은 인터페이스에 내가 추상적 파일 지속성 작업하는 경우 그 같은 시나리오는 가장 구현 될 것이지만 : 나는 내용을 확인하고 생산에 인터페이스가 실제로있을 것이다 모의를 삽입합니다 단위 테스트에서테스트 파일 기반 지속성

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

올바른 위치를 유지하십시오.

오버 헤드입니까? 이 방법이 일반적으로 사용됩니까? DB 관련 작업의 경우 이러한 종류의 작업은 간단하며 항상 사용됩니다.

답변

1

그렇습니다. 트래킹 모의 객체를 만드는 오버 헤드를 줄이려면 가능한 경우 메소드의 로컬 대체를 수행 할 수도 있습니다. 난 당신이 사용하는 어떤 언어 모르겠지만, 자바 지방의 재정은 다음과 같이 보일 것이다 : "안녕"

// 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가 가득 찼거나 마운트되지 않은 경우)를 실행할 수 있습니다.

파일 시스템에서의 실제 지속성은 통합 테스트를 통해 테스트해야합니다.