[JPA 활용 1] 테스트 코드 & TDD & 메모리 db

강신현·2022년 6월 30일
0

테스트 코드

내가 작성한 메서드가 실제로 재대로 동작하는지 테스트하는 코드

- 테스트코드를 작성하는 이유

  • 개발단계 초기에 문제를 발견하게 도와준다.
  • 개발자가 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지를 확인 할 수 있다.
  • 기능에 대한 불확실성을 감소시킬 수 있다.
  • 시스템에 대한 실제 문서를 제공한다.(단위 테스트 자체가 문서로 사용가능)

TDD

테스트가 주도하는 개발
실패하는 테스트코드 작성 -> 테스트가 성공하는 프로덕션코드 작성 -> 테스트가 성공하면 프로덕션 코드를 리팩토링 하는식으로 개발

추천 양식

@Test
    public void Test코드() throws Exception{
        // given
        
        // when
        
        // then
        
    }

위 양식을 매번 작성하기 귀찮기 때문에 아래 방법을 사용하여 코드를 템플릿화하면 편하다.

[IntelliJ] Live Template을 이용하여 자주 사용하는 코드 템플릿화

메모리 db

테스트 코드를 직접 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 #쿼리 파라미터 로그 남기기
profile
땅콩의 모험 (server)

0개의 댓글