seong

Junit 통합 테스트 하기 위한 팁 본문

Junit

Junit 통합 테스트 하기 위한 팁

hyeonseong 2022. 10. 28. 09:58

통합 테스트를 위한 어노테이션

@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) // 통합테스트

통합 테스트를 위한 팁

1. 테스트용 yml파일이 따로 필요하다.

 

2. H2 DB를 사용할 시 H2는 MariaDB를 지원하지 않기 때문에 DB설정이 따로 필요하다(MySQL사용)

spring:
  datasource:
    url: jdbc:h2:mem:test;MODE=MYSQL # MariaDB 가 안됨
    driver-class-name: org.h2.Driver
    username: sa
    password: 
  h2:
    console:
      enabled: true

 

3. 테스트 진행시 메서드마다 테스트 격리가 필요하다. 

 

4. SpringBoot 통합 테스트는 Rollback가 자동으로 되지않는다.

 

5. 4번을 해결하기 위해서 truncate 전략을 사용한다.(중요)

@Sql("classpath:truncate.sql")

 

6. truncate를 사용하기 위해선 이전에 미리 FK를 모두 날려주어야한다. (이것도 DB에서 따로 할 필요 x)

아래 처럼 파일을 생성후 FK가 걸려있는 테이블을 작성.

SET REFERENTIAL_INTEGRITY FALSE;
truncate table comment;
truncate table board;
truncate table users;
SET REFERENTIAL_INTEGRITY TRUE;