[kotlin] 코틀린 Mockito를 사용하여 특정 시나리오에 대한 테스트 작성하기

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 메서드에서 사용자를 생성하고, UserRepositorycreateUser 메서드가 호출되는지 검증하고 있습니다.

이제 Mockito를 사용하여 특정 시나리오에 대한 테스트를 작성하는 방법에 대해 간략하게 알아보았습니다. Mockito의 다양한 기능을 활용하면 더 복잡한 테스트 시나리오에 대해서도 유연하게 대처할 수 있습니다.

더 많은 정보를 원한다면 Mockito 공식 문서를 참고하시기 바랍니다.