• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

PostRepositoryTest의 RunWith 어노테이션에 대해서 질문 드립니다.

19.11.07 09:50 작성 조회수 129

0

코드를 따라 하던 중에 실수로 @RunWith(SpringRunner.class) 대신 @SpringBootTest를 넣고 돌렸었는데요.(@DataJpaTest는 제대로 넣었습니다.)

이 경우 @Autowired PostRepositoy postRepository 가 빈을 주입 받지 못하는걸 발견 했습니다.

@SpringBootTest는 통합 테스트 용이라고 하셨던게 어렴풋이 기억이 나는데, 통합 테스트라면 모든 빈이 주입 되어야 하지 않나요? @SpringBootTest 어노테이션을 주는 경우 왜 postRepository 빈이 주입 되지 않았는지 궁금합니다. (SpringBootTest 어노테이션은 실제로 applicationcontext를 로딩 하지는 않는건가요?)

답변 1

답변을 작성해보세요.

2

JUnit 4 기반 테스트(본 강좌에서 JUnit 4 사용중)에서는그 두 애노테이션 둘 다 있어야 합니다. @RunWith(SpringRunner.class)가 있어여 테스트용 스프링 ApplicationContext를 만들고 빈 주입도 됩니다.

@SpringBootTest는 @SpringApplication이 붙어있는 클래스를 찾아 거기 등록된 컴포넌트 스캔에 따라 모든 빈을 다 등록해주는게 맞습니다. 단 @RunWith(SpringRunner.class)와 같이 써야 합니다.