Mockito는 자바를 사용하여 유닛 테스트를 작성할 때 mock 객체를 만들고 관리하는 도구입니다. Hamcrest 라이브러리는 테스트 코드에서 더 읽기 쉬운 형식으로 단언을 표현할 수 있는 도구입니다. 이 두 라이브러리를 함께 사용하여 테스트 코드를 작성하는 방법을 살펴보겠습니다.
Mockito 및 Hamcrest 의존성 추가
먼저, Maven 또는 Gradle과 같은 빌드 도구를 사용하여 Mockito와 Hamcrest의 의존성을 프로젝트에 추가해야 합니다.
Maven을 사용하는 경우 pom.xml
파일에 다음과 같이 의존성을 추가할 수 있습니다:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
Gradle을 사용하는 경우 build.gradle
파일에 다음을 추가할 수 있습니다:
testImplementation 'org.mockito:mockito-core:3.9.0'
testImplementation 'org.hamcrest:hamcrest-library:2.2'
Mockito 및 Hamcrest를 사용한 테스트 코드 작성
이제 Mockito 및 Hamcrest를 사용하여 테스트 코드를 작성할 수 있습니다. 예를 들어, 다음과 같이 Mockito를 사용하여 mock 객체를 생성하고 Hamcrest를 사용하여 단언을 추가할 수 있습니다:
import static org.mockito.Mockito.*;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
public class ExampleTest {
@Test
public void testSomething() {
// mock 객체 생성
SomeClass mockObject = mock(SomeClass.class);
// 행위 검증
verify(mockObject).someMethod();
// Hamcrest를 사용한 단언 추가
assertThat(someValue, is(notNullValue()));
assertThat(someValue, is(equalTo(expectedValue)));
}
}
위 코드에서 SomeClass
는 테스트 대상이며, someMethod()
는 해당 클래스의 메서드입니다.
Mockito는 mock 객체를 생성하고 행위를 검증하는 데 사용되며, Hamcrest는 테스트 결과에 대한 단언을 지원합니다.
이렇게 함께 사용하면 Mockito로 mock 객체를 관리하고 Hamcrest로 테스트 결과를 검증하는 유연하고 가독성 높은 테스트 코드를 작성할 수 있습니다.
결론
Mockito와 Hamcrest는 테스트 주도 개발(Test-Driven Development, TDD) 및 유닛 테스트 작성을 쉽게 만들어주는 강력한 도구입니다. 이 두 라이브러리를 함께 사용하여 테스트 코드를 작성하면 가독성이 좋고 유지보수가 용이한 코드를 만들 수 있습니다.
참고 자료: