[java] PowerMock에서의 리소스 파일 읽기

PowerMock은 Java의 모의 객체(Mocks)를 생성하고 테스트하기 위한 도구입니다. 리소스 파일을 읽어와서 테스트에 활용하는 경우도 종종 있습니다. 이번 글에서는 PowerMock에서 리소스 파일을 읽는 방법에 대해 알아보겠습니다.

Maven 종속성 추가

PowerMock을 사용하기 위해서는 먼저 Maven 종속성에 PowerMock 라이브러리를 추가해야 합니다. pom.xml 파일에 다음 종속성을 추가합니다.

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-core</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

리소스 파일 읽기

PowerMock에서 리소스 파일을 읽기 위해서는 PowerMockito 클래스의 mockStaticPartial() 메서드를 사용합니다. 해당 메서드는 클래스의 정적 필드 또는 메서드를 모의(mock)하는 기능을 제공합니다.

다음은 test/resources 디렉토리에 위치한 test.properties 파일을 읽어오는 예제입니다.

import org.powermock.api.mockito.PowerMockito;
import org.junit.Test;

public class ResourceReaderTest {
    
    @Test
    public void testReadResourceFile() {
        PowerMockito.mockStaticPartial(ResourceReader.class, "getResourceAsStream");
        PowerMockito.when(ResourceReader.class, "getResourceAsStream", "test.properties")
                   .thenReturn(getClass().getResourceAsStream("/test.properties"));
        
        ResourceReader resourceReader = new ResourceReader();
        String result = resourceReader.readResourceFile();
        
        // 테스트 결과 검증 코드 작성
    }
}

위 예제에서는 ResourceReader 클래스의 getResourceAsStream() 메서드를 모의(mock)하고, 해당 메서드가 test.properties 파일을 찾아 읽어오도록 설정하고 있습니다.

테스트 결과 검증

ResourceReader 클래스의 readResourceFile() 메서드가 리소스 파일을 제대로 읽고 반환하는지를 검증하기 위해서는 반환된 결과를 확인해야 합니다. Mockito를 사용하여 검증할 수 있습니다.

아래는 assertEquals() 메서드를 사용하여 예상 결과와 실제 결과를 비교하는 예제입니다.

import org.junit.Assert;

...

String expected = "Hello, PowerMock!";
Assert.assertEquals(expected, result);

결론

PowerMock을 사용하여 테스트에서 리소스 파일을 읽는 것은 간단하며 유용한 기능입니다. 위에서 설명한 방법을 활용하여 리소스 파일을 테스트에 적용해보세요.