테스트 3

service layer에서는 도대체 뭘 테스트 해야해요?

DTO(repository) 레이어에서는 spring data jpa를 쓰는 경우 @DataJpaTest와 TestEntityManager를 사용하면 원하는 대로 테스트를 할 수 있다. testEntityManager로 jpa의 모든 동작(persist, delte 등)을 사용할 수 있다. 테스트를 위해 넣은 데이터는 나중에 롤백되기 때문에 데이터베이스에 영구적인 영향을 미치지 않는다. spring data jpa 자체가 이미 검증된 모듈인데 테스트할 필요가 뭐가 있냐고 생각할 수 있다. 그 말에 동의한다. 그래서 @Query를 사용해서 내가 지정한 쿼리를 날리는 메소드만 테스트 중이다. service layer를 테스트하려 했는데 도대체 뭘 테스트 해야겠는 지 모르겠었다. @ExtendWith(Mock..

처음 테스트 코드를 작성하며 겪었던 문제들

spring boot의 controller 클래스의 테스트 코드를 만들어봤다. 이게 내 첫 테스트 코드 경험이다. mockito 쓰는 게 아직 낯설지만 테스트 코드를 작성하다 만났던 에러들을 기록한다. @WebMvcTest(UserApiController.class) class UserApiControllerTest { @Autowired private MockMvc mvc; @MockBean private UserService userService; private Gson gson = new Gson(); ... } 테스트 케이스 위에 @WebMvcTest 를 써주는 것만으로도 무사히 테스트가 통과됐다. 처음에는 검색 시 너무 많은 애노테이션이 나와서 이것저것 다 써봤는데 이거 하나면 충분했다. 주의할..