실제 객체를 만들기에는 비용과 시간이 많이 들거나 의존성이 크게 걸쳐져 있어서 테스트 시 제대로 구현하기 어려울 경우 가짜 객체를 만들어서 사용하는 기술입니다.비즈니스 로직 클래스리포지토리 인터페이스Test Stub를 통해서 테스트여기서 Test Stub이란, 필요한
🚀 @Mock 을 사용해서 Mock Object 생성 기존에는 SimpleDataRepository simpleDataRepositoryMock = mock(SimpleDataRepository.class); 이런 식으로 mock() 함수를 통해서 매번 Mock O
🚀 Return Multiple Values 다음으로는 해당 Mock Object에 파라미터와 함께 메소드를 사용할 때에는 다음과 같이 작성하시면 되는데, 만약 정해놓은 파라미터를 사용하지 않고 Mock Object를 사용하게 되면 전달한 값에 해당하는 디폴트값이 반
조금 더 견고하고 정확한 테스트를 진행하기 위해서 가끔은 해당 테스트 안에서 특정 메소드를 호출했는지에 대해서 검증을 할 필요가 있습니다. 이를 위해 Mockito 에서는 verify() 라는 함수를 지원해줍니다.verify(mock).method(param);해당 M
Mock Object 를 생성할 때, 생성한 객체는 지정한 클래스의 행동(Behavior)를 가지지 못합니다. 즉, 개발자가 직접 해당 객체의 행동을 지정하지 않는 이상(when(), thenReturn()) 해당 객체가 수행하는 모든 행동은 디폴트 값으로 수행하게 됩
유닛 테스트를 할 때 컨트롤러 단만 테스트 해야하는 경우가 있습니다. 이럴 때에는 스프링 부트에서 제공해주는 @WebMvcTest() 와 MockMvc 를 사용하면 됩니다.@WebMvcTest(\[ControllerName.class])이 어노테이션을 클래스 상단부에
만약 테스트할 컨트롤러가 의존성이 있는 서비스 빈이 있다면 스프링 부트에서 제공해주는 @MockBean 어노테이션을 통해서 해당 빈을 주입시키고 Mock Object로 생성해줍니다. 그다음에 똑같이 해당 Mock Object 가 가질 행동(Behavior)을 지정해주면
@SpringBootTest해당 클래스의 패키지를 탐색해서 @SpringBootApplication 어노테이션이 있는 클래스를 탐색하고 실행시킵니다. 만약 없다면 한 패키지씩 줄여가면서 탐색을 이어나갑니다. 해당 애플리케이션을 실행시켜 주므로 모든 컴포넌트(Bean)들
테스트를 진행하게 되면 테스트 환경에 맞춰서 환경 설정을 해줄 필요가 있을 수 있습니다. 이럴 때에는 src/test 디렉터리에 새로운 resources 라는 디렉터리를 생성해줍니다. 그리고 해당 디렉터리에 application.yml 파일을 생성해서 기존의 설정들을