@AutoConfigureTestDatabase
애노테이션이란?
- 이름처럼 Test DB 를 구성할 때 유용한 애노테이션이다.
- 테스트 시 DB 를 테스트 DB 로 대체할 수 있다.
참고
- 애노테이션 내부 구현을 보면
@PropertyMapping("spring.test.database")
라고 된 부분이 있는데, 이 부분이 test DB 를 사용하도록 세팅하는 부분이다.
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ImportAutoConfiguration
@PropertyMapping("spring.test.database")
public @interface AutoConfigureTestDatabase {
@PropertyMapping(skip = SkipPropertyMapping.ON_DEFAULT_VALUE)
Replace replace() default Replace.ANY;
EmbeddedDatabaseConnection connection() default EmbeddedDatabaseConnection.NONE;
enum Replace {
ANY,
AUTO_CONFIGURED,
NONE
}
}
사용 가능한 옵션들
Replace
: 자동 구성된 test DB 가 존재하는 DataSource bean 을 대체할 것인지 아닌지에 대해 제어한다.NONE
: DataSource 를 대체하지 않음AUTO_CONFIGURE
: 필요하다면, 자동 구성된 것으로 대체함ANY
: 구성과 상관 없이 DataSource 를 대체함
Connection
: DB 커넥션 프로퍼티를 결정함Type
: 특정한 임베디드 DB 를 세팅할 수 있음 (ex.H2
,HSQL
,DERBY
)
사용법
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureTestDatabase(type = AutoConfigureTestDatabase.Replace.ANY, replace = EmbeddedDatabaseType.H2)
public class MyRepositoryTest {
// Your test cases here
}
참고 2
Replace.NONE
옵션을 켠 채@DataJpaTest
와 함께 쓰면 실제 DB 를 이용할 수 있다.
반응형
'프레임워크 > 스프링 프레임워크' 카테고리의 다른 글
@Transactional 애노테이션 정리 (0) | 2024.01.08 |
---|---|
@MockBean 애노테이션이란? (0) | 2023.08.03 |
@TestConfiguration 애노테이션이란? (0) | 2023.08.03 |
@DataJpaTest 애노테이션이란? (0) | 2023.08.03 |
Spring Boot Configuration Processor 란? (0) | 2023.08.02 |