inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업클럽 백엔드 스터디 2기] 3주차 발자국

spacebar
0

3주차 학습내용

Practical Testing : 실용적인 테스트 가이드

강의를 학습하며 작성한 내용입니다.

 

단위 테스트

테스트케이스 나누기

 

TDD: Test Driven Development

: 프로덕션 코드보다 테스트 코드를 먼저 작성해서 테스트가 구현 과정을 주도하도록 하는 개발 방법

- 복잡도가 낮은(유지보수가 쉬운), 테스트 가능한 코드로 구현할 수 있다.

- 쉽게 발견하기 어려운 예외상황을 놓치지 않게 해준다.

- 과감한 리팩토링이 가능하다.

 

테스트는 [ ]다

DisplayName을 섬세하게

@DisplayName("음료 1개를 추가") 보다는 @Display("음료를 1개 추가하면 주문 목록에 담긴다.") 처럼

BDD (Behavior Dirven Development) 스타일로 작성하기

: TDD에서 파생된 개발 방법

 

💻미션 - 테스트코드 작성

minsweeper에 대한 테스트 코드를 작성했봤는데 사실 어떤 부분을 어떻게 테스트해야할지 감이 오지 않았다. 간단한 게임이라도 내부 동작에 대해 작성할 테스트 코드가 많다는 건 알겠는데 @DisplayName과 bdd스타일 따르는 것만 신경 쓰고 정작 단위 테스트의 본질적인 목적을 잊고 작성한 것 같아서 아쉽다. 강의를 다 들은 후 다시 강의 내용을 가이드삼아 찬찬희 케이스를 나눠 작성해보고 싶다. 그리고 studycafe에 대해서도 단위 테스트 작성을 연습해봐야겠다.

 

Spring&JPA 기반 테스트

Persistence Layer

repository layer에 대한 테스트

Business Layer

재고라는 개념 도입

assertThatThrownBy(() -> stock.deductQuantity(quantity))
    .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("차감할 재고 수량이 없습니다.");

Stock에서 체크 후 예외를 던지는 것과 OrderService에서 체크 후 예외를 던지는 것은 다르다. (같은 상황이지만 발생할 수 있는 상황이 다르기 때문에 메시지도 다르다.) Service에서는 메시지가 사용자단까지 갈 수 있기 때문에 사용자 친화적인 메시지로 작성한다.

Presentation Layer

 

 

💬3주차 회고

테스트 코드의 중요성은 알지만 제대로 작성해 본 적은 없어서 하나씩 따라하면서 적용시켜봐야 겠다는 생각으로 강의를 들었다. 듣다보니 테스트 코드 작성에 대한 내용 말고도 아직 스프링과 자바에서도 익숙하지 않은 개념, 헷갈리는 내용들이 많다는 걸 깨달았다. 특히 Layer별 테스트 부분은 강의가 길고 내용이 많아 힘들었지만, 테스트 작성에 대한 부분 말고도 스프링에서의 Validation 적용에 대해 다시 한 번 공부할 수 있어서 좋았다. 리팩토링 강의에서 계속 들었던 책임 분리가 테스트 코드 작성에서도 중요하다는 걸 느꼈다.그리고 앞으로 작은 프로젝트를 하더라도 기능과 서비스의 확장을 염두한 개발을 해야겠다고 생각했다.

 

 

 

백엔드

답변 0