새소식

반응형
Spring/etc

[Spring] @ActiveProfiles, @Profile 활용 in Test

  • -
반응형

테스트 수행 시, 각 phase별로 설정이 다른 경우나 특정 phase인 상황을 테스트하고 싶을 수 있다.

그런 경우 어떻게 설정하는지 알아보도록 하자. 

 

@Profile

빈이나, 컴포넌트에 프로필을 구분하여 등록할 수 있게 해주는 어노테이션 

@TestConfiguration
public class TestConfiguration {

    @Bean
    @Profile("beta")
    public DataSource DataSource() {
        return new Log4jdbcProxyDataSource(hikariDataSource());
    }
    @Bean
    @Profile("alpha")
    public DataSource testDataSource() {
        return new HikariDataSource(hikariDataSource());
    }

    private HikariDataSource hikariDataSource() {
        return new HikariDataSource(HikariConfig());
    }
}

이렇게 설정해 놓으면 

spring application 실행 시 spring.profiles.active=alpha로 지정한 경우와 spring.profiles.active=beta로 지정한 경우 각각 다른 DataSource가 Bean에 등록되게 된다. 

 

@ActiveProfiles

테스트 수행 시 어떠한 프로필을 사용할 것인지 정해주는 어노테이션 

@DataJpaTest
@ActiveProfiles("alpha")
class ARepositoryTest {

    @Autowired
    ARepository ARepository;
    
    @Test
    void findByIdNoTest() {
    	// ... 
    }
}

이렇게 설정을 하면 해당 Test를 수행할 때

spring.profiles.active=alpha로 지정한 효과를 낼 수 있다. 

-> application-alpha.yml 파일을 로드하여 Test가 수행된다. 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.