오류회고 - 테스트 중 NPE 문제

parkkhee·2023년 6월 2일
0

오류 아로새기기

목록 보기
7/10

몇시간을 잡고 있었다.

하나씩 단위 테스트 할떄는 잘되는데,,
전체 동시에 테스트 시키면,, NPE 가 뜨더라,,

삽질하다가
디버깅 하다가 알안었다
id값이 증가돼서 @BeforeEach 달린 메서드가 실행되고 있다는 것을,,

  1. JPA의 id값은 테스트하지 않습니다.
    JPA id 값은 JPA전략과 DB 전략이 맞물려 알아서 생성될 겁니다. 저희가 크게 신경쓸 부분이 아닙니다. 1이 들어가던 10이 들어가던 고양이가 들어가던 그건 시스템에서 알아서 할 일 입니다.
    mysql에서는 기본적으로 auto_increment를 통해 id값이 1부터 순차적으로 증가하여 insert됩니다. 그렇기 때문에 한 개의 테스트는 성공이 될 수 있지만 여러개를 테스트 한다면 이 전에 종료된 테스트의 id + 1로 입력되기 때문에 테스트가 실패 할 수 있습니다.
    테스트가 모두 종료되면 테스트 환경에 맞는 database, h2나 mysql db등의 테이블이 리셋(drop)됩니다. 그리고 테스트를 실행하면 테이블이 생성되는 동시에 모든 테이블들의 id값이 1로 초기화 됩니다.

참고사이트

profile
순우리말 백엔드 개발자

0개의 댓글