소프트웨어 개발의 지혜 - 스프링 편 3주차 회고
코드숨 - 스프링 3주차 회고
이번주는 저번 주에 작성한 프로젝트에 대한 테스트 코드를 구현하였습니다.
Service의 경우 JUnit을 이용하여 테스트하였는데 이는 예전에 해 본 경험이 있어서 방법 자체는 어렵지 않았습니다.
그러나 controller 테스트에서 스프링의 힘을 빌려 웹테스트를 하는데 처음 해보는 것이라 애를 먹었습니다.
특히 mockMvc에서 perform을 수행하는 것과 given을 사용하는 것이 처음이라 어떻게 해야하는지 잘몰라서 많이 헤맸습니다.
또한 Nested을 이용하여 JUnit에서 계층 구조의 테스트 코드를 짜는 신기한 경험도 해보았습니다.
처음 강의를 들을 때 느낌
처음 service부분의 테스트 코드 작성하는 방법은 이미 알고 있어서 어려움이 없었습니다.
그러나 controller를 테스트할 때 처음으로 접하는 개념들(MockBean, mockMvc, given, perform)이 너무 많아서 헷갈리고 어려웠습니다.
과제를 하기 전에 주어진 강의만 보고는 이해하기가 어려웠습니다ㅠ
과제를 할 때 느낌
강의를 다 듣고 과제를 하려는데 controller 테스트를 어떻게 할 지 몰라서 막막했습니다.
그래서 일단은 할 수 있는 service부터 JUnit을 이용하여 구현하였습니다.
이 후 controller쪽은 강의를 다시보고, 구글링을 하고, 코드숨에서 같은 과정을 하시는 분들의 코드를 보면서 어떻게든 작성을 하였습니다.
작성을 하고나서도 어떻게 테스트코드가 작동하는지 정확하게 잘 몰라서 많이 헤맸습니다.
특히, mockMvc의 perform과 given이 무슨 의미이고, 어떻게 돌아가는 것인지 잘몰라서 많이 헤맸습니다ㅠ
그래도 리뷰를 받고, 다른 분들의 코드를 보고, 구글링을 하다보니 어느 정도는 이해할 수 있어서 그래도 모든 테스트 코드를 작성할 수 있었습니다.
또한 코드 리뷰를 통해 처음으로 JUnit에서 계층 구조의 테스트 코드를 작성해보았습니다.
이를 통해 계층 구조의 테스트 코드를 작성하기 전보다 가독성이나 각 메소드의 테스트 상황적인 면을 설명하는 것에 더 적합한 테스트 코드를 작성할 수 있었습니다.
어디서부터 시작해야할지 어떻게 구현할지 너무 막막했습니다.
과제풀이 강의를 들으면서 느낀 점
해설 강의를 보면서 given이나 mockMvc와 perform에 대해서 좀 더 이해할 수 있었습니다.
특히 제가 service 테스트 코드와 controller 테스트 코드를 작성할 때는 둘 다 tasks의 내용을 확인하는 방식이어서 비슷한 면이 꽤 있었습니다.
그러나 아샬님의 해설강의를 보니 controller의 테스트코드가 굉장히 심플했는데 그 이유는 controller의 역할은 단순히 사용자의 명령을 service에 전달해주는 것이지, controller에서 service가 제대로 돌아가는지는 테스트할 필요가 없고, 그것은 service 테스트 코드가 할 일이라는 것을 알게 되었습니다.
이번 주 과정에서 아쉬운 점
이번 주도 처음보는 모르는 개념 앞에서 많이 헤맨 것이 아쉬웠습니다.
그리고 테스트 코드를 짤 때 논리적이고 상황적으로 잘 설명할 수 있는 코드를 짜지 못하고 임의로 편하게 작성한 면이 있는데 앞으로는 이러한 점을 지양하고, 좀 더 논리적이고 테스트 상황을 잘 설명할 수 있는 테스트 코드를 작성하도록 노력해야겠습니다.
다음 주 각오
다음 주 주제는 객체지향 설계인데 클린 아키텍쳐와 Spring Data JPA와 Repository에 대해서 배우는데, 특히 JPA를 하나도 몰라서 걱정이 되긴 하지만 잘 따라갈 수 있도록 최선을 다하겠습니다.
댓글남기기