Mockito는 테스트 더블(Test Double)을 생성하고 관리할 수 있는 Java 라이브러리입니다. 코틀린에서 Mockito를 활용하여 특정 조건에 따른 테스트를 작성하는 방법을 살펴보겠습니다.
Mockito 의존성 추가
우선, Mockito를 프로젝트에 추가해야 합니다. Gradle을 사용하는 경우 다음과 같이 의존성을 추가합니다.
testImplementation 'org.mockito:mockito-core:3.10.0'
Maven을 사용하는 경우 다음과 같이 의존성을 추가합니다.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.10.0</version>
<scope>test</scope>
</dependency>
의존성을 추가한 후에는 프로젝트를 새로고침하여 변경 사항을 적용합니다.
특정 조건에 따른 Mock 객체 반환
코틀린 Mockito를 사용하여 특정 조건에 따라 Mock 객체가 특정 값을 반환하도록 설정할 수 있습니다. 예를 들어, 사용자의 나이에 따라 다른 할인율을 계산하는 메서드를 가진 서비스를 가정해보겠습니다.
interface DiscountService {
fun calculateDiscount(userAge: Int): Double
}
해당 서비스를 테스트하기 위해 Mockito를 사용하여 조건에 따라 다른 값을 반환하는 Mock 객체를 생성할 수 있습니다.
class DiscountServiceTest {
@Test
fun `test calculate discount based on user age`() {
val mockDiscountService = mock<DiscountService> {
on { calculateDiscount(any()) } doAnswer {
val userAge = it.getArgument<Int>(0)
if (userAge < 18) {
0.2 // 20% 할인율
} else {
0.1 // 10% 할인율
}
}
}
// 테스트 코드 작성
}
}
위의 예제에서 on { calculateDiscount(any()) } doAnswer { ... }
부분은 calculateDiscount
메서드가 호출될 때 20% 또는 10%의 값을 반환하도록 지정한 것입니다.
이제 해당 Mock 객체를 사용하여 특정 조건에 따라 할인율을 올바르게 계산하는지 테스트할 수 있습니다.
결론
코틀린 Mockito를 활용하여 특정 조건에 따라 Mock 객체가 특정 값을 반환하도록 설정하는 방법을 살펴보았습니다. 이를 통해 테스트를 보다 유연하게 작성하고 특정 조건에 따른 동작을 검증할 수 있습니다. Mockito 사용법에 대한 더 자세한 내용은 Mockito 공식 문서를 참고하시기 바랍니다.