1. 문제 정의
지난 프로젝트에선 모킹에 대한 학습을 위해 테스트 코드는 DB 연동을 하지 않았습니다.
따라서 이번 프로젝트에선 Classist 입장에서 테스트를 진행해보기 위해 DB를 연동한 테스트를 진행하려 합니다.
하지만 테스트를 실제 서비스중인 DB로 진행하게 된다면 예측할 수 없는 에러가 생길 수 있기에, H2 DB를 사용하여 테스트를 진행해보고자 합니다.
2. H2 설정
우선 build.gradle에 의존성을 추가해줍니다.
testImplementation group: 'com.h2database', name: 'h2', version: '1.4.200'
다음으로 test - resources - application-test.yml 파일을 생성해줍니다.
spring:
datasource:
url: jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_DELAY=-1
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
properties:
hibernate:
ddl-auto: create-drop
- ddl-auto의 경우 테스트의 독립성을 위해 설정해주었습니다.
3. Spring Test 설정
예시로 userServiceTest를 설정해보겠습니다.
@SpringBootTest
@ActiveProfiles("test")
public class UserServiceTest {
@Test
void test() {
}
}
이처럼 @ActiveProfiles(”test”)를 통해 앞서 설정한 application-test.yml 을 설정 파일로 지정할 수 있게 됩니다.
H2의 특성과, ddl-auto: create-drop을 통해 별도의 롤백 작업 없이도 데이터가 초기화 되기 때문에, 동일한 결과를 보장받을 수 있습니다.
'Java' 카테고리의 다른 글
어떻게 JVM은 메모리를 관리할까 (0) | 2024.01.13 |
---|---|
디미터의 법칙 (0) | 2023.11.14 |
[JUnit5] @ParameterizedTest (0) | 2023.10.30 |
Java Record (0) | 2023.10.23 |
== & Equals (0) | 2023.10.15 |