인프런 워밍업 클럽 백엔드-code 3주차 발자국

인프런 워밍업 클럽 백엔드-code 3주차 발자국

학습 요약

테스트 코드 작성에 대해 배웠다.

테스트 코드는 어찌 보면 간단하다고 생각하는데 늘 손이 가지 않고 어렵다고 느껴졌다.

생각해보면 assertThat 같은 몇 개의 함수만 사용해서 같은지 확인하면 되는데 왜 어려운가 싶었는데 작성된 코드의 문제였던 것 같다.

단위 테스트에서 중요한 것은 아래와 같다는 것을 알게 되었다.

  • 테스트 세분화 하기

  • 테스트하기 어려운 영역 분리

테스트하기 어려운 영역 분리하는 것이 정말 어려운 것 같다.

예를 들어 입력을 받는 부분이나 LocalDateTime 같은 시간이 사용되는 부분이 테스트하기 어려운 영역이다.

이런 영역들을 메서드에서 분리해 상위에서 파라미터로 받게 코드를 잘 짜놔야 테스트하기 쉬운 것 같다.

또한 application.yml에서 dev와 test의 profile을 분리하여 test에서는 데이터를 직접 넣게 하는 것도 알게 되었다.

dev에서 data.sql로 데이터를 미리 넣어놨을 때 테스트하기 어려운 것을 보았다.

이때 test의 profile을 분리해 test에서는 자기가 원하는 데이터들을 넣어서 테스트 해야 한다는 것을 알게 되었다.

이전에는 테스트할 때 객체를 생성해서 직접 넣는 것이 굉장히 어려웠던 기억이 난다.

이런 경우 역시 테스트하기 어렵게 코드를 짠 경험이였던 것 같다.

데이터를 쉽게 만들고 테스트할 수 있게 메서드를 분리하거나 해야 할 것 같다.

또한 테스트 코드도 문서라는 것도 배웠다.

@DisplayName을 사용해 테스트코드가 어떤 것을 테스트 하는지 잘 보여줘야 한다.

또한 BDD 스타일로 작성하니 더 테스트코드가 잘 읽힌다는 것을 알게 되었다.

하지만 테스트코드에서 데이터를 여러 개 복잡하게 만들어서 넣는 경우 테스트코드의 given절이 굉장히 길어지고 더러워지는 것 같다.

이 경우 어떻게 해야 할지 조금 더 고민해 봐야 할 것 같다.

미션

Day11 미션 : 스터디카페 코드에 대해 테스트코드를 작성해 보는 미션이였다.

나는 LockerPass, SeatPass, PassOrder에 대해 테스트코드를 작성하였다.

각 도메인 클래스 모두 비즈니스 로직들이 많이 들어있었기에 어떤 것을 테스트 할지 잘 보인 것 같다.

PassOrder의 경우 전체 금액을 계산하거나 할인을 계산하는 로직에 대해서도 테스트 하였다.

그리고 SeatPass의 경우 Locker를 사용할 수 있는지 없는지를 체크하는 로직에 대해 테스트 하였다.

LockerPass의 경우 LockerPass와 SeatPass가 같은 고정권인지에 대해 테스트 하였다 .

https://github.com/CJ-1998/readable-code/tree/test/src/test/java/cleancode/studycafe/tobe/model

happy case와 반대에 대해 테스트를 작성했었다.

이렇게 2개씩 할 수 있어서 7개를 작성할 수 있었던 것 같다.

이것들 이외에는 어떤 것을 테스트 해야 할지 잘 보이지 않았던 것 같다.

어떤 것을 테스트 해야 할지, 할 수 있는지, 어떤 테스트코드를 짜야 하는지 보는 눈을 길러야 할 것 같다.

 

회고

읽기 좋은 코드에 이어서 테스트코드에 대해 학습했다.

읽기 좋은 코드를 짜야 테스트 코드도 잘 짤 수 있는 것 같다.

또 어떤 것을 테스트 해야 하고 테스트 해야 하지만 어떻게 테스트 할 수 있을지 고민을 많이 해보면서 테스트코드를 작성하는 능력을 키워야 할 것 같다.

늘 멀고 어렵게 느껴졌지만 이번 기회를 통해 테스트코드도 이전 프로젝트에 적용해 봐야 할 것 같다.

댓글을 작성해보세요.

채널톡 아이콘