ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • test 설정 - 1 spring boot
    spring 2023. 3. 9. 18:05

    테스트는 보통 단위 테스트, 통합테스트 두 가지로 나눈다

     

    단위 테스트는 순수 자바의 영역에 가까운 테스트다 주로 조건이 제대로 나오는지 체크할 때가 많았는데 (특히 날짜, 볌위 같은거 체크하면 참 좋다) 그런 영역에서 많이 썼다. 단순하고 빌드가 빨라서 단순하게 테스트 할 시 참 좋다.

     

    통합테스트는 스프링 설정을 연결해서 쓰는것을 통합 테스트라고 한다

     

    나는 보통은 서비스 테스트 + 통합테스트 위주로 많이 했던것 같다

    왜냐하면은 서비스를 mocking해서 테스트를 하다가 보면 초창기에 jpa 잘 못쓸 때 영속성 관련한 에러도 못잡을 때도 많았고 웹 특성상 db랑 연결할일이 많은데 결과를 제대로 보고 싶으면 mock하는 수준으로는 체크가 안됬기 때문이다

     

    설명은 여기까지하고 시작은 gradle 설정부터 해보자

    원래 스프링 프로젝트를 만들면 보통 gradle에서 test를 만들어 준다.

    하지만 단위 테스트, 통합테스트를 나누는 경우가 많다.  junit5의 tag기능을 쓰면 되는데 설정을 이렇게 해주고 테스크 쪽에서 만들어 준다.

     

    이제 스프링 설정을 가보자.

    폴더 구조

    스프링 내부 integration test 예제

    하나하나 설명을 하면 @SpringBootTest -> 스프링 의존성 

    @Tag junit5설정 위의 gradle의 include의 이름과 같다

    @ActiveProfile 해당 테스트를 진행할 떄 스프링 설정 중 test라는 이름의 설정을 가져오겠다.

     

    application-test.yml 

    spring:
      h2:
        console:
          enabled: true
      jpa:
        hibernate:
          ddl-auto: create-drop
        properties:
          hibernate:
            format_sql: true
            dialect: org.hibernate.dialect.MySQL57Dialect
        show-sql: true
      datasource:
        driver-class-name: org.h2.Driver
        url: jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE;
        username: root
        password: 1234

    테스트 용 db로 h2db를 썼다.

Designed by Tistory.