테스트 주도 개발(Test-Driven Development, TDD)이나 단위 테스트를 작성할 때, Mockito나 MockK와 같은 모킹 프레임워크를 사용하여 외부 의존성을 가짜(mock) 객체로 대체할 수 있습니다.
이 포스트에서는 Kotlin에서 JUnit 5와 함께 Mockito와 MockK를 사용하는 방법에 대해 알아보겠습니다.
목차
- Mockito 소개
- MockK 소개
- JUnit 5와 함께 Mockito 사용하기
- JUnit 5와 함께 MockK 사용하기
- 결론
1. Mockito 소개
Mockito는 Java 기반의 모킹 프레임워크로, 행위 기반(Mocking) 모킹을 지원합니다. 특정 메서드가 호출될 때 결과를 설정하거나 해당 메서드가 특정 파라미터로 호출되었는지 검증하는 기능을 제공합니다.
예시 코드:
// 객체 생성
List<String> mockedList = mock(List.class);
// 특정 메서드 호출 결과 설정
when(mockedList.get(0)).thenReturn("first");
// 특정 파라미터로 메서드 호출여부 확인
verify(mockedList).get(0);
2. MockK 소개
MockK는 Kotlin을 위한 모킹 프레임워크로, Mockito와 유사한 기능을 제공합니다. 코틀린의 확장 함수와 인라인 함수를 활용하여 DSL(Domain Specific Language) 형식으로 모킹 및 검증을 진행할 수 있습니다.
예시 코드:
// 객체 생성
val mockedList = mockk<List<String>>()
// 특정 메서드 호출 결과 설정
every { mockedList.get(0) } returns "first"
// 특정 파라미터로 메서드 호출여부 확인
verify { mockedList.get(0) }
3. JUnit 5와 함께 Mockito 사용하기
JUnit 5와 함께 Mockito를 사용하려면, 해당 의존성을 빌드 도구(예: Maven, Gradle)에 추가하고, @ExtendWith(MockitoExtension::class)
어노테이션을 사용하여 MockitoExtension을 활성화해야 합니다.
Gradle에서 Mockito 의존성 추가:
testImplementation 'org.mockito:mockito-core:3.11.2'
JUnit 5에서 MockitoExtension 사용:
@ExtendWith(MockitoExtension::class)
class MyTestClass {
// 테스트 코드 작성
}
4. JUnit 5와 함께 MockK 사용하기
JUnit 5와 함께 MockK를 사용하기 위해서는 MockK 관련 의존성을 추가하고, MockKExtension
을 JUnit 5 테스트 클래스에 적용해야 합니다.
Gradle에서 MockK 의존성 추가:
testImplementation 'io.mockk:mockk:1.12.0'
JUnit 5에서 MockKExtension 사용:
@ExtendWith(MockKExtension::class)
class MyTestClass {
// 테스트 코드 작성
}
5. 결론
이제 JUnit 5와 함께 Mockito 또는 MockK를 사용하여 Kotlin 기반의 테스트 코드를 작성하는 방법을 알게 되었습니다. 이러한 모킹 프레임워크를 적절히 활용하여 외부 의존성을 가진 코드를 테스트하는 데 도움이 될 것입니다.
이상적인 테스트 코드 작성을 통해 안정적이고 견고한 애플리케이션을 만드는데 도움이 되길 바랍니다.
참조: