HOWTO · Java

Java의 모의 객체

모의 객체는 자바에만 국한된 것이 아니라 실제 코드를 에뮬레이트하기 위해 코드 블록을 더미 구현으로 바꾸는 일반적인 단위 테스트 기술입니다. 테스트 중인 클래스에서 제공하는 기능을 대상으로 하는 단위 테스트를 작성하는 것은 매우 유용합니다.

이 페이지의 내용

모의 객체는 해당 객체에서 실제 코드를 실행하지 않고도 실제 객체를 시뮬레이션하고 검증하는 데 도움이 됩니다. 메서드 호출에 대한 특정 결과를 반환하도록 모의를 설정하고 메서드가 호출되었는지 여부를 쉽게 확인할 수 있습니다.

위에서 논의한 바와 같이 Mock 객체는 단위 테스트에 사용됩니다. 테스트하려는 메서드의 개체가 있고 해당 메서드가 다른 개체에 종속되어 있는 경우 해당 종속성의 실제 인스턴스가 아닌 종속성의 모의를 만들고 개체를 테스트할 수 있습니다. 격리 상태.

Java의 모의 객체

모의 객체 생성을 위한 일반적인 Java 프레임워크에는 JMock 및 EasyMock이 있습니다. 이 두 프레임워크를 사용하면 일반적으로 모의 개체를 만들 수 있으며 그에 따라 동작을 정의하여 반환 값과 효과에서 정확히 무엇을 기대해야 하는지 알 수 있습니다.

예를 들어, 한 가지 일반적인 사용 사례는 DAO(Data Access Objects) 계층과 비즈니스 로직을 수행하는 컨트롤러가 있는 MVC(Model-View-Controller) 애플리케이션일 수 있습니다. 컨트롤러를 테스트하고 컨트롤러에 DAO(데이터 액세스 개체)에 대한 종속성이 있는 경우 컨트롤러에 더미 개체를 반환하는 DAO의 모의 개체를 만들 수 있습니다.

모의 객체는 테스트하려는 애플리케이션의 기능을 테스트하는 데 도움이 됩니다. 그 이유는 이러한 종속 객체를 조롱하여 모든 종속성을 달성할 수 있기 때문입니다.

그리고 그들이 테스트를 통과한다면, 이 테스트의 단위가 정확하다는 것이 확실합니다.

고려해야 할 한 가지 중요한 사항은 모의 객체가 자신이 조롱하는 실제 객체와 동일한 인터페이스를 구현한다는 것입니다. 이렇게 하면 실제 인스턴스인 것처럼 코드에서 인터페이스 유형을 통해 이를 처리할 수 있습니다.

모의 객체를 사용하려면 Mockito 라이브러리를 가져오세요. 정적 org.mockito.Mockito.* 가져오기; 모의 객체 인스턴스를 생성하는 데 도움이 되는 mock() 메서드를 사용할 수 있습니다.

다음 단계는 모의 생성이며 구문은 List mockedList = mock(List.class);입니다. 이제 일부 값을 추가하기 위해 mockedList.add("Value one")와 같이 List의 정의된 객체를 사용하고 다음과 같이 verify() 메서드를 사용하여 확인합니다 - verify(mockedList).add("one").

// Import Library
import static org.mockito.Mockito.*;

// Create Mock
List mockedList = mock(List.class);

// using mock object
mockedList.add("one");
mockedList.clear();

// Varifying
verify(mockedList).add("one");
verify(mockedList).clear();