내가 작성한 메서드가 실제로 재대로 동작하는지 테스트하는 코드
테스트가 주도하는 개발
실패하는 테스트코드 작성 -> 테스트가 성공하는 프로덕션코드 작성 -> 테스트가 성공하면 프로덕션 코드를 리팩토링 하는식으로 개발
@Test
public void Test코드() throws Exception{
// given
// when
// then
}
위 양식을 매번 작성하기 귀찮기 때문에 아래 방법을 사용하여 코드를 템플릿화하면 편하다.
[IntelliJ] Live Template을 이용하여 자주 사용하는 코드 템플릿화
테스트 코드를 직접 db에 반영시키면서 확인하는 것이 좋지만,
매번 메인 db에 test 데이터들을 넣고 빼고 하는게 바람직한 방법이 아니기 때문에 메모리 db라는 일시적인 db를 사용하여 확인할 수 있다.
H2 Database Engine Cheat Sheet
In-Memory 부분 db 주소(jdbc:h2:mem:test)를
test 파일에 resources - application.yml을 따로 만들어, datasource:url 부분에 넣어주면 된다.
spring:
datasource:
url: jdbc:h2:mem:test
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
#show_sql: true ym
format_sql: true
logging.level:
org.hibernate.SQL: debug
org.hibernate.type: trace #쿼리 파라미터 로그 남기기
하지만 springboot에서는 위와 같이 설정해줄 필요가 없다.
위처럼 메인과 test 간의 yml을 분리하여 db만 분리해주면 어떤 db를 사용할지 설정해주지 않아도
springboot에서 자동으로 메모리 db를 사용하기 때문에 test코드가 정상적으로 돌아간다.
spring:
logging.level:
org.hibernate.SQL: debug
org.hibernate.type: trace #쿼리 파라미터 로그 남기기