[java] Mockito를 사용하여 메소드 호출 시 원하는 결과를 조건에 따라 반환하는 방법은?

Mockito는 Java에서 유닛 테스트를 작성할 때 자주 사용되는 프레임워크입니다. Mockito를 사용하면 메소드 호출에 대한 응답을 조작할 수 있으며, 특정 조건에 따라 원하는 결과를 반환할 수 있습니다.

아래는 Mockito를 사용하여 메소드 호출 시 원하는 결과를 조건에 따라 반환하는 방법의 예시입니다.

// 테스트 대상 클래스
public class MyClass {
    public String myMethod(int param) {
        if (param > 10) {
            return "Large";
        } else {
            return "Small";
        }
    }
}

// 테스트 코드
import org.junit.Test;
import org.mockito.Mockito;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

public class MyClassTest {
    
    @Test
    public void testMyMethod() {
        MyClass myClass = Mockito.mock(MyClass.class);
        
        // 메소드 호출 시 param이 5일 때, "Small"을 반환하도록 지정
        when(myClass.myMethod(5)).thenReturn("Small");
        
        // 메소드 호출 시 param이 15일 때, "Large"를 반환하도록 지정
        when(myClass.myMethod(15)).thenReturn("Large");
        
        // 메소드 호출 및 결과 확인
        assertEquals("Small", myClass.myMethod(5));
        assertEquals("Large", myClass.myMethod(15));
    }
}

위의 예시에서는 MyClass라는 테스트 대상 클래스를 만들었습니다. myMethod라는 메소드는 파라미터로 받은 정수에 따라 “Large” 또는 “Small”을 반환합니다.

테스트 코드에서는 Mockito를 사용하여 MyClass를 Mock 객체로 생성합니다. 그리고 when 메소드를 사용하여 메소드 호출 시 원하는 값을 지정합니다.

TestCase에서는 메소드 호출 후 반환된 값과 예상되는 값이 일치하는지를 assertEquals를 사용하여 확인합니다.

이와 같이 Mockito를 사용하여 메소드 호출 시 원하는 결과를 조건에 따라 반환할 수 있습니다.

더 자세한 Mockito 사용법은 Mockito 공식 문서를 참고하시기 바랍니다.

참조: