워밍업 클럽 스터디 2기 [클린코드 & 테스트코드] - 4주차 회고
4주차 회고
1. Mock을 마주하는 자세
Test Double
Dummy : 아무 것도 하지 않은 깡통 객체
Fake : 단순한 형태로 동일한 기능은 수행하나 , 프로덕션에서 쓰기에는 부족한 객체
Stub : 테스트에서 요청한 것에 대해 미리 준비한 결과를 제공하는 객체. 그 외에는 응답하지 않는다
Spy : Stub이면서 호출된 내용을 기록하여 보여줄 수 있는 객체. 일부는 실제 객체처럼 동작시키고 일부만 Stubbing할 수 있다. (상태 검증)
Mock : 행위에 대한 기대를 명세하고 , 그에 따라 동작하도록 만들어진 객체 (행위 검증)
2. 더 나은 테스트를 작성하기 위한 구체적 조언
한 문단에 한 주제
하나의 테스트가 한 문단이라고 생각한다면 하나의 테스트는 하나의 주제만을 가져야 한다.
테스트 환경의 독립성을 보장하자
다른 테스트에 영향을 주지 않아야함
테스트 간 독립성을 보장하자
두개 이상의 테스트에 대해 서로 영향을 주지 않아야함
Test Fixture 구성하기
fixture : 고정물 , 고정되어 있는 물체
테스트를 위해 원하는 상태로 고정시킨 일련의 객체
Test Fixture 클렌징
deleteAll vs deleteAllInBatch , Text Fixture를 정리하고 초기화
@ParameterizedTest
if문 같은 논리 구조가 들어가는 경우 지양하기
하나의 테스트에 값이 바뀌는 경우 사용
@DynamicTest
인스턴스의 여러 시나리오 테스트할 경우 사용
3. Appendix
학습 테스트
잘 모르는 기능 , 라이브러리 , 프레임워크를 학습하기 위해 작성하는 테스트
여러 테스트 케이스를 스스로 정의하고 검증하는 과정을 통해 보다 구체적인 동작과 기능을 학습할 수 있다.
관련 문서만 읽는 것보다 훨씬 재밌게 학습할 수 있다.
Spring Rest Docs
테스트 코드를 통한 API 문서 자동화 도구
API 명세를 문서로 만들고 외부에 제공함으로써 협업을 원활하게 한다.
기본적으로 AsciiDoc을 사용하여 문서를 작성한다
Rest Docs vs Swagger
RestDocs
장점
테스트를 통과해야 문서가 만들어진다. (신뢰도가 높다)
프로덕션 코드에 비침투적이다
단점
코드 양이 많다
설정이 어렵다
Swagger
장점
적용이 쉽다
문서에서 바로 API 호출을 수행해볼 수 있다.
단점
프로덕션 코드에 침투적이다.
테스트와 무관하기 때문에 신뢰도가 떨어질 수 있다.
회고
워밍업 클럽 2기의 모든 일정이 끝낫다. 한달이 어떻게 지나갔는지 모르도록 많이 바뻐서 따라가기 힘들었지만 일정을 따라가면서 소화한것이 뿌듯하다. 읽기 좋은 코드와 테스트 코드에 지식이 한줄 추가 된거같다. 시간이 될때 한번 부족한 부분에 대한 복습을 해야할 것 같다.
댓글을 작성해보세요.