inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

살짝 서두른 Spring 기반 테스트 코드 - 인프런 워밍업 클럽 3기 백엔드 코드✨

10
1

👣 발자국 책갈피

✅미션PR 책갈피

 

3주 차부터는 미션과 발자국을 조금 서둘러 진행할 예정이다.
앞서 언급했듯이, 이번 주부터 항해 플러스가 시작되어 최대한 진도를 빠르게 빼보려고 한다.

 

현재 날짜(3월 17일) 기준으로 Day 16 미션과 3주 차 발자국을 작성 중이며,
이번 주 안에 Day 18 미션과 4주 차 발자국도 작성을 완료하는 것이 목표이다.
(가능할지는 모르겠지만 ㅎㅎ)

 

조금 급하게 진행하는 감이 있어 개인적으로 많이 아쉽다.
워밍업 클럽에만 온전히 집중할 수 있었다면 더 많은 성장을 할 수 있었을 텐데 말이다...

 

하지만, 후회는 하지 않는다. 다음 기수의 존재는 우빈님만 아시겠지만, 다음에 또 없을 수도 있는 기회를 놓치고 싶지 않았기 때문이다. 👍

img_6.png

나는 위의 이미지처럼 Trello를 활용해 인프런 워밍업 클럽에 참여하고 있다.
미션 제출 날짜가 일정하지 않다 보니, 제출 하루 전에 노티를 받도록 설정해 두고 유용하게 사용 중이다. 🙃


💡 자기만의 언어로 키워드 정리하기

 

섹션 6. Spring & JPA 기반 테스트

Layered Architecture

Hexagonal Architecture

단위테스트 vs. 통합테스트

IoC, DI, AOP

ORM, 패러다임의 불일치, Hibernate

Spring Data JPA

QueryDSL

@SpringBootTest vs @DataJpaTest

img_7.png

@SpringBootTest vs @WebMvcTest

@Transactional(readOnly = true)

Optimistic Lock, Pessimistic Lock

CQRS

@RestControllerAdvice, @ExceptionHandler

Spring bean validation

@WebMvcTest

ObjectMapper

Mock, Mockito, @MockBean

img.png

img_1.png

img_2.png


👨🏻‍💻 미션 회고

[미션 Day 11]

[미션 PR]
#6

스터디 카페 이용권 선택 시스템 단위 테스트 작성

 

미션 조건은 다음과 같다.

 

✔각 프로젝트 모두 강의 중에 작성한 tobe 패키지 코드를 기준으로 함 (lesson 6-4 가 가장 마지막 버전)
✔3개 이상의 서로 다른 클래스 & 총 7개 이상의 테스트 작성 ➡ 단, 같은 인터페이스를 구현하고 있는 구현체들은 1개 클래스로 간주한다.
✔무엇을 테스트하고자 했는지를 잘 나타낸 @DisplayName 작성하기
✔BDD(given/when/then) 스타일 따르기 (주석으로 표기)

 

가장 작은 단위의 메서드 부터 단위 테스트를 작성하면서,
테스트 커버리지를 높이기 위해, 모든 주요 로직에 대한 단위테스트를 작성하고자 했다.

 

단위테스트를 작성하면서 강의에서도 강조한 내용 중에 하나인 @DisplayName을 잘 작성하기 위해 많이 고민했다.

 

 

하지만, 사용자 입력을 받는 클래스인 InputHandler의 단위테스트를 작성하는 과정에서 어려움이 있었다.
InputHandler 내부에서 static으로 선언되어 있어 mocking도 하기 어려웠다.

public class InputHandler {
    
    private static final Scanner SCANNER = new Scanner(System.in);

}

프로덕션 코드를 수정하지 않는다는 요구사항을 지키면서는 테스트가 어려웠다.
만약 프로덕션 코드를 수정한다면 테스트가 가능해질 것이다.

 

 

미션 제출 후, 차후에 프로덕션 코드를 수정해서 테스트를 작성 해볼 예정이다.


🏃 돌아보며..

Day 11 미션은 제출이 끝이 아니라, 중간점검 라이브에 이어 마지막 라이브에서 코드 리뷰 단계가 남아있다.
중간 점검 때 세심한 코드 리뷰를 받고 수정하면서 많은 성장을 했기에 이번에도 신청하지 않을 이유가 없었다.

 

다른 러너 분들도 꼭 받아봤으면 한다. 😊
아직까지 혼자 신청해서 뻘줌해서가 아니라... 진짜 좋은 기회이자 경험이다... 🤣

img_5.png

코드 리뷰 대상자로 뽑히길 기대하며.. 마지막 4주차도 화이팅 💪

[출처]

백엔드 인프런 워밍업클럽 백엔드 3기 발자국 박우빈 테스트코드 실용적인테스트가이드

답변 0