소개

Integration Test에서 DB 분리를 해보며 찾았던 방법과 그에 대한 고민들을 적어본다.

@Transactional

테스트하는 클래스 위에 @Transactional을 붙이게 되면

Test가 모두 수행된 후 DB는 Rollback 되기 때문에 **테스트 간의 격리**를 시킬 수 있다.

근데 Test를 진행하기 위해 우선 들어가 있어야 하는 값들이 있을 땐 어떻게 해야할까…

  1. given 단계에서 모두 넣는다. → mock으로 처리해서 ㄱㄱ
  2. seeding 해야하는 값들을 insert 쿼리로 만들어서 Test 하기 전에 실행 시킨다.

issue

id를 1로 지정하고 Test Code를 돌려도 Mysql identity이기 때문에

1이 아니라 계속 증가해서 테스트 실패하고 404 내려옴

해결 방안


위의 이슈 해결

id를 1로 지정하고 Test Code를 돌리게 되면 identity이기 때문에 한 번은 성공하지만