-
테스트코드에서는 H2 DB를 사용하자!프로젝트/게시판 프로젝트 2022. 5. 11. 21:48
H2 데이터베이스란?
H2는 자바 기반 오픈소스 RDBMS입니다.
주로 인 메모리 데이터베이스로 사용되며 기능 테스트할 때 유용합니다.
인 메모리 데이터베이스는 휘발성 데이터베이스이기 때문에 컴퓨터를 종료하면 모든 데이터가 삭제됩니다.
스프링 부트에서 dependency를 추가하면 약 2MB 크기의 라이브러리로 H2 DB를 사용할 수 있습니다.
H2 데이터베이스를 사용하는 이유는?
- 실제 서비스용 DB는 따로두고 테스트 코드용 DB와 분리하여 이용할 수 있습니다.
- 또한 휘발성 데이터베이스이기 때문에 테스트코드의 매번 DB를 지워주는 작업 없이 테스트 코드의 재사용성을 높일 수 있게 합니다.
- 인 메모리 데이터베이스이기 때문에 빠른 실행속도를 보여줍니다.
사용법
build.gradle에 다음과 같은 의존성을 추가합니다.
dependencies{ .... runtimeOnly 'com.h2database:h2' .... }
test -> resources -> application.properties에 다음과 같은 설정을 합니다.
# Datasource spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 spring.datasource.username=h2test spring.datasource.password=h2test # JPA spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.open-in-view=false spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
위의 application.properties의 경로는 다음 그림에서 자세하게 설명하겠습니다.
프로젝트는 main폴더와 test폴더로 나뉘게됩니다.
그리고 테스트 코드는 test폴더에 작성됩니다.
여기서 main과 test폴더에 각각 resources를 두고 application.properties를 관리하게 되면 실제 서비스는 main에 있는 설정 파일을 사용하고 테스트코드는 test폴더에 있는 설정파일을 사용하게 됩니다.
이렇게 하면 설정이 마무리됩니다.
만약 에러가 발생한다면 다음 글을 참고하세요!
출처
https://mangkyu.tistory.com/183
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
컨트롤러를 테스트해보자! (0) 2022.05.13 [에러 해결 완료] Type definition error , InvalidDefinitionException (0) 2022.05.12 Spring Rest API 예외처리 (feat. 스프링의 기본적인 예외 처리 방법과 Best Practice) (0) 2022.05.10 Controller에 인자값은 어떤값이 올 수 있을까? (0) 2022.05.06 RestController에서 클라이언트에게 어떤 값을 반환해야 할까? (0) 2022.05.05