티스토리 뷰

JUnit에서 Repository 테스트를 하기 위해, @SprintBootTest 대신에 @DataJpaTest 를 사용하여

 

테스트 코드를 작성 중인데 h2 대신에 실제 DB를 연동하려고 하지만

 

막상 실행해보면, h2 데이터베이스에 계속 연결이 되는 것을 보게 됩니다.

 

그래서 db 관련 profile이 의도한 대로 적용이 안되나 싶어서 mysql을 위한 profile도 활성화를 해보았지만

 

항상 h2 데이터베이스로 연결을 합니다.

2021-10-15 12:22:29.402  INFO [-] [main] a.m.s.SegmentBrowserApplicationTests     : The following profiles are active: mysql-default-db
2021-10-15 12:22:30.390  INFO [-] [main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2021-10-15 12:22:30.661  INFO [-] [main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 255ms. Found 22 JPA repository interfaces.
2021-10-15 12:22:30.743  INFO [-] [main] beddedDataSourceBeanFactoryPostProcessor : Replacing 'dataSource' DataSource bean with embedded version
2021-10-15 12:22:31.058  INFO [-] [main] o.s.j.d.e.EmbeddedDatabaseFactory        : Starting embedded database: url='jdbc:h2:mem:5d2febd6-1127-447f-b0c9-c1172603d716;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'

 

이렇게 @DataJpaTest를 사용하면 무조건 h2로 접속이 되는 이유는

 

@DataJpaTest에서 Default로 h2 in memory 를 사용하기 때문입니다.

 

다른 DB를 사용하기 위해서는 자동으로 구성해주는 부분을 제거해주어야 합니다.

 

UnitTest 클래스에 아래 어노테이션을 적용하여 자동 설정을 제거해주면 됩니다.

@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class JpaUnitTests {
...
}

그리고, JunitTest를 수행하면 설정된 datasource 값에 따라 DB를 연동하게 됩니다.

 

참조

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/test/autoconfigure/jdbc/AutoConfigureTestDatabase.html

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함