Guice는 의존성 주입(Dependency Injection) 프레임워크로서, 테스트 중에 모의 객체(Mock Object)를 생성하고 사용하는 기능을 제공합니다. 모의 객체는 실제 객체를 대체하여 테스트에 사용되며, 특정 상황을 시뮬레이션하거나 테스트의 일관성을 유지하는 데 도움이 됩니다.
모의 객체(Mock Object) 생성하기
Guice에서 모의 객체를 생성하기 위해서는 Guice의 MockitoExtension
을 사용해야 합니다. 이를 위해 다음 의존성을 추가해야 합니다:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.23.4</version>
<scope>test</scope>
</dependency>
MockitoExtension을 사용하려면 테스트 클래스에 @ExtendWith(MockitoExtension.class)
어노테이션을 추가해야 합니다. 예를 들어:
@ExtendWith(MockitoExtension.class)
public class MyTest {
// ...
}
테스트 클래스에서 모의 객체를 생성할 때는 @Mock
어노테이션을 사용하여 필드를 선언해야 합니다. 예를 들어:
@ExtendWith(MockitoExtension.class)
public class MyTest {
@Mock
private MyService myService;
// ...
}
모의 객체(Mock Object) 사용하기
모의 객체를 사용하여 테스트를 작성할 때는 @InjectMocks
어노테이션을 사용하여 테스트 대상 객체에 의존성을 주입해야 합니다. 예를 들어:
@ExtendWith(MockitoExtension.class)
public class MyTest {
@Mock
private MyService myService;
@InjectMocks
private MyController myController;
// ...
}
위의 예시에서 myController
객체는 myService
객체에 의존하고 있습니다. @InjectMocks
어노테이션을 사용하면 myController
객체에 자동으로 myService
객체가 주입됩니다.
테스트 메소드에서 모의 객체를 사용할 때는 Mockito의 기능을 활용할 수 있습니다. 가장 일반적으로 사용되는 기능은 모의 객체의 특정 메소드 호출을 확인하는 것입니다. 예를 들어 myService
객체의 doSomething()
메소드가 호출되었는지를 확인하려면 다음과 같이 사용할 수 있습니다:
@Test
public void testSomething() {
// ...
verify(myService).doSomething();
// ...
}
마무리
Guice는 테스트에서 모의 객체를 사용하여 일관성 있는 테스트를 작성하는 데 도움이 됩니다. 위의 예제 코드를 참고하여 Guice의 모의 객체 생성과 사용 방법을 익히고, 자신의 프로젝트에서 활용해 보세요. 추가적인 기능이나 세부 사항은 Mockito의 문서를 참고하시기 바랍니다.