[java] Mockito를 사용하여 람다 표현식을 가진 메소드를 테스트하는 방법은?
모키토(Mockito)는 자바에서 유닛 테스트를 작성할 때 사용하는 목(Mock) 프레임워크입니다. 람다 표현식을 가진 메소드를 테스트하기 위해서는 모키토의 doAnswer
메소드를 사용할 수 있습니다.
다음은 모키토를 사용하여 람다 표현식을 가진 메소드를 테스트하는 예제 코드입니다.
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import java.util.function.Consumer;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
public class LambdaMethodTest {
@Test
public void testLambdaMethod() {
// 모키토로 모의 객체 생성
MyService myService = mock(MyService.class);
// 람다 표현식을 가진 메소드 호출
myService.doSomethingWithLambda(a -> {
// 람다 표현식이 실행되면서 수행할 동작 정의
System.out.println("Lambda expression received: " + a);
});
// 람다 표현식이 올바르게 실행되는지 검증하기 위해 모키토의 doAnswer 메소드를 사용
ArgumentCaptor<Consumer<String>> captor = ArgumentCaptor.forClass(Consumer.class);
doAnswer(invocation -> {
Consumer<String> lambda = captor.getValue();
lambda.accept("Test Argument");
return null;
}).when(myService).doSomethingWithLambda(captor.capture());
// 람다 표현식이 올바르게 실행되는지 검증
myService.doSomethingWithLambda(s -> {
assert s.equals("Test Argument");
});
}
}
class MyService {
public void doSomethingWithLambda(Consumer<String> lambda) {
// 람다 표현식 실행
lambda.accept("Argument");
}
}
위의 코드에서는 MyService
클래스의 doSomethingWithLambda
메소드를 테스트하는 예제입니다. 모키토를 사용하여 MyService
의 모의 객체를 생성한 후, doSomethingWithLambda
메소드를 호출합니다.
람다 표현식을 보내면서 메소드가 실행될 때, 이를 검증하기 위해 모키토의 doAnswer
메소드를 사용합니다. doAnswer
메소드는 메소드 호출 시 특정 동작을 수행하는 람다 표현식을 정의할 수 있습니다. 이를 통해 람다 표현식이 올바르게 실행되는지 테스트할 수 있습니다.
위의 코드에서는 람다 표현식이 실행될 때 System.out.println
메소드를 호출합니다. 이를 통해 람다 표현식이 올바르게 실행되는지 확인할 수 있습니다.
참고자료: