몇시간을 잡고 있었다.
하나씩 단위 테스트 할떄는 잘되는데,,
전체 동시에 테스트 시키면,, NPE 가 뜨더라,,
삽질하다가
디버깅 하다가 알안었다
id값이 증가돼서 @BeforeEach 달린 메서드가 실행되고 있다는 것을,,
- JPA의 id값은 테스트하지 않습니다.
JPA id 값은 JPA전략과 DB 전략이 맞물려 알아서 생성될 겁니다. 저희가 크게 신경쓸 부분이 아닙니다. 1이 들어가던 10이 들어가던 고양이가 들어가던 그건 시스템에서 알아서 할 일 입니다.
mysql에서는 기본적으로 auto_increment를 통해 id값이 1부터 순차적으로 증가하여 insert됩니다. 그렇기 때문에 한 개의 테스트는 성공이 될 수 있지만 여러개를 테스트 한다면 이 전에 종료된 테스트의 id + 1로 입력되기 때문에 테스트가 실패 할 수 있습니다.
테스트가 모두 종료되면 테스트 환경에 맞는 database, h2나 mysql db등의 테이블이 리셋(drop)됩니다. 그리고 테스트를 실행하면 테이블이 생성되는 동시에 모든 테이블들의 id값이 1로 초기화 됩니다.
참고사이트