728x90
Test 코드를 작성할 때 @Autowired와 @SpringBootTest를 사용하지 않고 테스트할 수 있는 방법에 대해서 알아보겠습니다.
우선, AutoAppConfig class를 프로젝트 최상단에 생성하여주고 @Configuration, @ComponentScan 어노테이션을 추가해줍니다. 코드는 다음과 같습니다.
@Configuration
@ComponentScan
public class AutoAppConfig {
}
@ComponentScan을 사용하면 @Component가 어노테이션이 있는 것들을 Spring Bean으로 자동으로 등록해줍니다. @Component는 @Service, @Repository에 모두 추가되어 있습니다.
준비가 완료되었으니 테스트 코드를 작성하면 됩니다. TestService가 구현되었다는 것을 가정하겠습니다.
...
public class TestServiceTest {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
private final TestService testService = ac.getBean(PetService.class);
@Test
@DisplayName("빈 이름으로 조회")
void findBeanByName() {
TestService testService = ac.getBean("testService", TestService.class);
assertThat(testService).isInstanceOf(TestService.class);
}
}
위의 코드처럼 getBean("빈 이름", 빈 타입)을 실행하면 스프링 빈에 등록된 TestService가 반환되게 됩니다. 따라서 @SpringBootTest와 @Annotation을 사용하지 않아도 테스트를 진행할 수 있게 됩니다.
728x90
'Java, JavaScript > Spring Boot' 카테고리의 다른 글
[Spring Boot] 연관관계 메서드 설정하기 (0) | 2021.09.06 |
---|---|
[Spring Boot] 동물병원 진료 데이터베이스 설계 (0) | 2021.08.31 |
[Spring Boot] IntelliJ Live Templates 생성하는 방법 (0) | 2021.08.26 |
[Spring Boot] Auditing은 뭐야? (0) | 2021.08.23 |
[Spring Boot] Entity 생성은 뭐야? (0) | 2021.08.20 |