21.12.27 TIL44

서태욱·2021년 12월 27일
0

🔎 오늘 배운 것

통합테스트와 단위테스트의 Annotaion

@SpringBootTest

요즘 계속 테스트 코드를 작성중인데, 그동안 처음 annotation을 선언할 때 @SpringBootTest만을 사용해 왔다. 그런데 이 annotation은 통합테스트에 사용하기 때문에 스프링의 전체 운영 환경과 같은 상황에서 프로젝트가 제대로 작동하는지를 보기 위한 것이라고 한다. 따라서 운영 환경과 가장 유사한 테스트가 가능하지만, @SpringBootApplication에 있는 모든 빈을 스캔하기 때문에 그만큼 무겁고 시간도 많이 걸린다.

@WebMvcTest, @RestClientTest, @DataJpaTest, @JsonTest

따라서 단위 테스트를 위해서는 그에 맞게 @WebMvcTest, @RestClientTest, @DataJpaTest, @JsonTest등의 annotation을 적절히 사용하는 것이 바람직한 것 같다.

JPA 연관관계 영속성 전이(CASCADE)

CommentRepository Test Code를 작성하던 중 연관된 두 entity에서 save()를 진행하는 과정에 대한 오류가 발생했다.
Thrown when a property cannot be persisted because it is an assocaition with a transient unsaced entity instance.

저장되지 않은 entity는 persist할 수 없으면 throw한다는 의미인 듯 했다. @ManyToOne 어노테이션이 붙은 User Review Id, User Id에 CASCADE 설정을 해주었다. 하위 엔티티까지 영속성을 전달하는
CascadeType.PERSIST를 설정했다.

❗️ 느낀 점

  • 테스트 코드 작성은 또 하나의 새롭고 거대한 영역인 것 같다.
  • 그렇기 때문에 그 중요성을 간과해서는 안되겠다는 생각도 든다.

✔️ 참고

Spring Docs

profile
re:START

0개의 댓글