[spring boot]DB 설정값 출력과 테스트에서 기본 DB 설정 오버라이드하는 법
📌 반드시 H2 DB가 의존성에 있어야 하며(pom.xml), scope 가 test 로 되어있어야 한다.
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
스프링부트 "테스트"의 경우, 원래 설정한 데이터베이스로 코드를 실행하지 않는다. (충격)
그렇다면 어떤 DB 로 테스트를 하는가?
바로 H2 데이터베이스의 인메모리 데이터베이스로 테스트를 진행한다.
/**
* @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 설정을 주었는데,
* 원래 Test 의 경우, 스프링이 자동으로 H2의 인메모리 데이터베이스를 로드한다.
*
* 근데 그렇게 하기 싫은 경우, 이 설정을 오버라이드할 수 있다.
*/
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class ConnectedDatabasePropertyPrintTest {
@Autowired
private ApplicationContext context;
@Test
public void dataSourceInfo() throws SQLException {
DataSource ds = context.getBean(DataSource.class);
DatabaseMetaData metaData = ds.getConnection().getMetaData();
System.out.println("DataSource info -> +
"\nURL: " + metaData.getURL()
+ ", \ndriver: " + metaData.getDriverName()
+ ", \nusername: " + metaData.getUserName());
}
}
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) 설정을 한 결과이다. 원래 설정했던 MySQL DB를 쓰는 것을 볼 수 있다.
위 출력 결과는 @AutoConfigureTestDatabase 설정을 하지 않았을 떄이다. 자동으로 H2 DB와 연결된 것을 볼 수 있다.
Author And Source
이 문제에 관하여([spring boot]DB 설정값 출력과 테스트에서 기본 DB 설정 오버라이드하는 법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeonnex/DB-설정값-출력과-스프링부트-테스트에서-기본-DB-설정-오버라이드하는-법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)