[spring boot]DB 설정값 출력과 테스트에서 기본 DB 설정 오버라이드하는 법

장서연·2022년 4월 2일
0

📌 반드시 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와 연결된 것을 볼 수 있다.

0개의 댓글