[java] Mockito를 사용하여 파일 입출력과 같은 외부 리소스를 테스트하는 방법은?
Mockito는 자바에서 외부 리소스를 테스트하는 데 매우 유용한 도구입니다. 파일 입출력과 같은 외부 리소스를 테스트하려면 Mockito를 사용하여 가짜 객체를 만들고, 이를 통해 실제 리소스와의 상호작용을 시뮬레이션할 수 있습니다.
다음은 Mockito를 사용하여 파일 입출력을 테스트하는 간단한 예제입니다.
1. 파일 리소스를 추상화하는 인터페이스 만들기
public interface FileResource {
void writeToFile(String data);
String readFromFile();
}
2. 가짜 파일 리소스 구현체 만들기
public class FakeFileResource implements FileResource {
private String fileContents;
@Override
public void writeToFile(String data) {
// 가짜 파일에 데이터를 쓰는 로직 구현
...
}
@Override
public String readFromFile() {
// 가짜 파일에서 데이터를 읽는 로직 구현
...
return fileContents;
}
// 테스트에서 가짜 파일에 내용을 설정하기 위한 메소드
public void setFileContents(String contents) {
this.fileContents = contents;
}
}
3. 테스트 작성하기
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.*;
public class FileResourceTest {
@Test
public void testFileResource() {
// 가짜 파일 리소스 생성
FakeFileResource fakeFileResource = new FakeFileResource();
// 가짜 파일에 내용 설정
String expectedContents = "Hello, World!";
fakeFileResource.setFileContents(expectedContents);
// 가짜 파일 리소스를 사용하는 클래스 생성
MyClass myClass = new MyClass(fakeFileResource);
// MyClass가 올바르게 파일 리소스를 사용하는지 검증
myClass.doSomething();
// 파일 리소스의 메소드가 올바르게 호출되었는지 검증
verify(fakeFileResource).writeToFile(anyString());
verify(fakeFileResource).readFromFile();
// MyClass가 올바르게 동작했는지 검증
// ...
}
}
위의 예제에서는 가짜 파일 리소스를 생성하여 실제 파일과 상호작용을 시뮬레이션하고, Mockito를 사용하여 파일 리소스와의 상호작용을 검증하고 MyClass가 올바르게 동작하는지 확인합니다.
참고 자료:
- Mockito 공식 문서: https://javadoc.io/static/org.mockito/mockito-core/3.6.28/org/mockito/Mockito.html
- Mockito 가이드: https://site.mockito.org/