Mockito는 코틀린에서 테스트 더블을 쉽게 만들수 있도록 하는 라이브러리 중 하나입니다. Mockito를 사용하면 객체의 동작을 가짜로 대체하여 원하는대로 테스트할 수 있습니다. 여기서는 Mockito를 사용하여 특정 시나리오에 대한 테스트를 작성하는 방법에 대해 알아보겠습니다.
Mockito 및 의존성 추가
먼저, Mockito를 사용하기 위해 프로젝트의 의존성에 Mockito 라이브러리를 추가해야 합니다. Gradle을 사용하는 경우 build.gradle
파일에 다음 의존성을 추가합니다.
testImplementation 'org.mockito:mockito-core:3.9.0'
Maven을 사용하는 경우, pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>
의존성을 추가한 후에는 프로젝트를 다시 빌드해야 합니다.
Mockito를 사용한 테스트 작성
이제 Mockito를 사용하여 간단한 테스트 케이스를 작성해보겠습니다.
가정: UserService
클래스는 UserRepository
를 의존하고 있습니다. UserRepository
에서 사용자를 생성하는 createUser
메서드를 테스트하려고 합니다.
@RunWith(MockitoJUnitRunner::class)
class UserServiceTest {
@Mock
lateinit var userRepository: UserRepository
@InjectMocks
lateinit var userService: UserService
@Test
fun `test create user`() {
val user = User("john.doe@example.com", "John Doe")
// 사용자 생성 메서드 호출 시 UserRepository의 createUser가 호출되는지 검증
`when`(userRepository.createUser(user)).thenReturn(true)
val result = userService.createUser(user)
assertTrue(result)
verify(userRepository).createUser(user)
}
}
위의 코드에서 @Mock
어노테이션은 UserRepository
에 대한 목(mock)을 만들고, @InjectMocks
어노테이션은 UserService
에 대한 목을 주입합니다. 그 후에 test create user
메서드에서 사용자를 생성하고, UserRepository
의 createUser
메서드가 호출되는지 검증하고 있습니다.
이제 Mockito를 사용하여 특정 시나리오에 대한 테스트를 작성하는 방법에 대해 간략하게 알아보았습니다. Mockito의 다양한 기능을 활용하면 더 복잡한 테스트 시나리오에 대해서도 유연하게 대처할 수 있습니다.
더 많은 정보를 원한다면 Mockito 공식 문서를 참고하시기 바랍니다.