워밍업 클럽 스터디 2기 [클린코드 & 테스트코드] - 4주차 회고

워밍업 클럽 스터디 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기의 모든 일정이 끝낫다. 한달이 어떻게 지나갔는지 모르도록 많이 바뻐서 따라가기 힘들었지만 일정을 따라가면서 소화한것이 뿌듯하다. 읽기 좋은 코드와 테스트 코드에 지식이 한줄 추가 된거같다. 시간이 될때 한번 부족한 부분에 대한 복습을 해야할 것 같다.

댓글을 작성해보세요.

채널톡 아이콘