[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가 올바르게 동작하는지 확인합니다.

참고 자료: