본문 바로가기

IT/JAVA

@Autowired 필드주입 Spring 없이 mock 생성하여 테스트하기

반응형

테스트중 아래와 같은 Service 가 있을수 있다.

@Service
public class AService{
    @Autowired
    BRepository bRepository; 

    @Autowired
    CRepository cRepository; 
    .
    .
    .
    @Autowired
    ZRepository zRepository; 

}

이 경우에 보통 Spring 을 구동하여 mock bean을 등록하여 테스트를 진행한다.

하지만 시간도 오래 걸리고 그렇기 때문에 리플렉션을 통해 mock bean을 생성하여 사용할 수 있다.

import static org.mockito.Mockito.*;

@Test
public void ATest(){
    AService aService = new AService();
    BRepository bRepository = mock(BRepository.class);

    Field filed = AService.class.getDeclaredField("bRepository");
    filed.setAccessible(true);
    filed.set(aService, bRepository);
    .
    .
    .
    // 테스트 실행
}
반응형