[워밍업 클럽 3기 BE 클린코드&테스트] - 3주차 발자국
회고
3주차에도 많은 것을 학습하였습니다. 테스트 코드 적용 실습과 함께 Persistence Layer, Business Layer, Presentation Layer 계층마다의 특징과 테스트코드 작성법을 직접 적용해보는 점이 좋았습니다. 마지막 주차도 열심히 수강하여 완강을 목표로 해보겠습니다.!
강의 내용 요약
테스트 코드가 필요한 이유
시간 절약: 수동 테스트보다 빠르고 자동화 가능
안정성: 휴먼 에러 방지, 신뢰성 있는 코드
인수인계 용이: 명확한 테스트가 곧 문서 역할
단위 테스트
작은 코드 단위를 외부 의존 없이 테스트로 빠르고 안정
예외 케이스, 경계값 등을 세분화해서 테스트
단위 테스트 작성할 때 주의점
암묵적이거 아직 드러나지 않은 요구사항이 있는가? 에 대한 의문을 가지며 테스트 케이스를 세분화하자
해피케이스, 예외케이스에 대해서 고루 케이스를 세분화하자.
테스트하기 어려운 값 대해서는 분리하거나 인터페이스화 해서 테스트에 용이한 구조로 만들자
Layered Architecture와 테스트
Persistence Layer Test
쿼리가 의도대로 동작하는지 검증
쿼리를 구현하는 기술이 바뀌어도 기능의 동작을 보장하도록 테스트를 작성, Repository 테스트
@DataJpaTest
를 사용하면 DB 관련 Bean만 로딩, 테스트 후 자동 rollback(트랜잭션 보장)으로 쿼리 구현 방식이 바뀌어도 동작 보장
Business Layer Test
비즈니스 로직 흐름과 트랜잭션 처리 검증
실제 빈 전체 로딩, 요청값을 생성해 흐름 테스트
트랜잭션 rollback으로 데이터 일관성 확인
@Transactional
readonly=true로 성능최적화 가능
Presentation Layer Test
외부 요청, 파라미터 검증 중심
의존 관계를 가짜객체를 사용해서 환경을 재현합니다.
Service 등은 가짜(Mock)로 주입, 요청-응답 구조, 유효성 검사 테스트에 초점
미션
Day 11 - 스터디카페 프로젝트 단위 테스트 작성
https://github.com/5jeong/readable-code/tree/main/src/test/java/cleancode
댓글을 작성해보세요.