Java & Kotlin/Spring
@SpringBootTest, @TestConfiguration
jaamong
2022. 9. 24. 09:52
김영한 님 인강을 보다가 나온 @SpringBootTest, @TestConfiguration 애노테이션에 대해 간단하게 정리하려고 한다.
@SpringBootTest
스프링 AOP를 적용하려면 스프링 컨테이너가 필요하다. 이 애노테이션이 있으면 테스트 시 스프링 부트를 통해 스프링 컨테이너를 생성한다. 테스트에서 @Autowired 등을 통해 스프링 컨테이너가 관리하는 빈들을 사용할 수 있다.
@TestConfiguration
테스트 안에서 내부 설정 클래스를 만들어서 사용하면서 이 애노테이션을 붙이면, 스프링 부트가 자동으로 만들어주는 Bean들에 추가로 필요한 스프링 빈들을 등록하고 테스트를 수행할 수 있다.
@SpringBootTest //스프링 띄움 -> 필요한 스프링 빈 등록, 의존관계 주입
class MemberServiceV3_3Test {
public static final String MEMBER_A = "memberA";
public static final String MEMBER_B = "memberB";
public static final String MEMBER_EX = "ex";
@Autowired
private MemberRepositoryV3 memberRepository;
@Autowired
private MemberServiceV3_3 memberService;
@TestConfiguration
static class TestConfig { //DI를 위한 빈 등록
@Bean
DataSource dataSource() {
return new DriverManagerDataSource(URL, USERNAME, PASSWORD);
}
@Bean
PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
MemberRepositoryV3 memberRepositoryV3() {
return new MemberRepositoryV3(dataSource());
}
@Bean
MemberServiceV3_3 memberServiceV3_3() {
return new MemberServiceV3_3(memberRepositoryV3());
}
...
}