20221129- 회고

선을로·2022년 11월 29일
0

회고

목록 보기
5/20

학습회고

테스트케이스 작성해보는데
자꾸 BindingResult에서 에러를 뱉는다.
에러에 관해 구글링을 아무리 해도 만족할만한 답을 찾을 수 없었는데
뭐가 문제인가 디버깅을 해보다가
테스트코드에서 TestRestTemplate를 사용하는 부분에서
객체 값이 전달되지 않아서 null값이 들어왔던게 문제였는데
TestRestTemplate에 대해서 조사하면서
현재 사용하고 있는 방식이 @RestController가 아니라서 데이터를 전달시키지 못 했던 것..
일단 책에 현재 내 코딩을 적용시키지 않는 부분은 넘어가면서
진도를 빼기로 했다.
후에 책에 나온것과 같은 방식을 적용할 때나 참고해야지.

하지만 기존에 만들어둔 테스트코드에서도 문제가 발생했는데
Spring Data JPA Repository로 변경하면서
메소드들이 실행 될 때마다
auto-increment 때문에 id값의 변경으로 인해
기존에 미리 정해놓은 id값으로 조회할 때 존재하지 않는다는 문제가 발생한다.
구글링해보니 AfterEach등에서 deleteAll()로 초기화 해줘도 id값은 초기화 되지 않는다.

결국 @DirtyContext를 쓰거나
데이터베이스에 맞게 @After등에서 auto-increment 값을 쿼리로 재지정 해주는 방법이 있는데
전자는 메소드 하나한 끝날때마다 애플리케이션 컨텍스트를 새로 만들기 때문에 느려져서 비효율적이고,
후자는 통합테스트에서는 사용할 수 없다함..
때문에 id에 굳이 집착하지 않을 테스트 방법을 고르는게 낫다함.

되새김

  • auto-increment로 인한 테스트케이스 실행 문제
    [1], [2]
  • JUnit - unsatisfied dependency mockmvc 에러 @AutoConfigureMockMvc로 해결
    [1], [2]
  • Optional에 대하여
    [1]
  • Mokito
    [1]

0개의 댓글