[java] Mockito와 Hamcrest를 함께 사용하여 테스트 결과를 검증하는 방법은?

Mockito는 자바에서 사용되는 인기있는 mocking 프레임워크인 반면, Hamcrest는 풍부한 매처(matcher) 라이브러리입니다. 두 프레임워크를 함께 사용하면 테스트 코드에서 좀 더 가독성 있고 간결한 검증을 할 수 있습니다.

우선, 테스트 대상 Mockito 모의 객체를 생성하고 메서드를 호출한 결과를 얻습니다. 그런 다음, Hamcrest 매처를 사용하여 예상 결과와 실제 결과를 검증합니다. 아래는 Mockito와 Hamcrest를 함께 사용하여 테스트 결과를 검증하는 예시입니다:

import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

public class MyTest {

    @Mock
    private MyService myService;

    @Test
    public void testMyMethod() {
        // Mockito 모의 객체 생성
        myService = Mockito.mock(MyService.class);

        // Mockito.when을 사용하여 메서드 호출 결과 설정
        Mockito.when(myService.myMethod()).thenReturn("expectedResult");

        // Hamcrest 매처를 사용하여 결과 검증
        assertThat(myService.myMethod(), is("expectedResult"));
    }
}

위의 예시에서는 MyService 클래스의 myMethod() 메서드의 반환값을 “expectedResult”로 설정하고, Hamcrest의 is() 매처를 사용하여 예상값과 실제값을 비교하고 있습니다. 만약 조건이 복잡해질 경우, Hamcrest의 다른 매처들을 사용하여 좀 더 다양한 검증을 수행할 수 있습니다.

이렇게 Mockito와 Hamcrest를 함께 사용하여 테스트 결과를 검증하면, 가독성이 좋고 유지보수가 용이한 테스트 코드를 작성할 수 있습니다.

참고 자료: