개발하는 자몽

@SpringBootTest, @TestConfiguration 본문

Java/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());
        }
        
        ...
    }

'Java > Spring' 카테고리의 다른 글

[Spring]JdbcTemplate  (0) 2022.09.30
스프링 예외 추상화  (1) 2022.09.29
[트랜잭션] @Transactional AOP  (0) 2022.09.23
[Spring MVC] Model, @ModelAttribute  (1) 2022.09.10
[Spring MVC] 뷰 템플릿, 템플릿 엔진, thymeleaf  (0) 2022.09.08
Comments