새소식

반응형
Spring/etc

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

  • -
반응형

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

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

 

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

@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에 등록되게 된다. 

 

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

@DataJpaTest @ActiveProfiles("alpha") class ARepositoryTest { @Autowired ARepository ARepository; @Test void findByIdNoTest() { // ... } }

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

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

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

반응형

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

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