2021-05-19(Wed)

Facts (사실, 객관)

  • 테스트 케이스를 리팩토링하였다.

  • 사이드 프로젝트 회의를 두 차례 진행하였다.

Feelings (느낌, 주관)

  • 아내와 시간을 잘 못 보냈었는데, 같이 시간을 보내고 사진도 많이 찍어줄 수 있는 하루였다. 덕분에 다행스럽다.

  • 테스트를 능숙하게 잘 짜고 싶다.

Findings (배운 점)

  • Unit Test를 어떻게 해야 잘 작성할 수 있을지 학습했다.

    • 하나의 테스트케이스에 최소한의 기능만 검증하고, 최대한 간결하게 작성한다.

    • 입력값에 대한 결과 값을 검증하는 방식으로 작성하라.

      • 기본적으로는 입력값에 대한 결과값을 확인하는 방식으로 작성하면 소스가 변경되더라도 테스트케이스를 변경할 일이 훨씬 적다.

    • 불안한 부분이 없도록, 개발하는 부분은 최대한 커버하라.

    • Third Party Library의 기능은 믿고, 단위테스트 검증대상에서 제외하라.

      • 넘 중요한 기능이라면 Integration Test나 다른 테스트로 검증하는 것을 고려해보자.

    • Setter는 막 써도 되나?

      • 테스트 코드 작성 시에만 Setter를 사용하도록 하자. 강제할 방법은 없지만.

  • @DisplayName 이란?

    • 테스트 메서드를 실행할 때 임의의 메세지를 Test reports와 IDE test runner에 출력하기 위해 쓸 수 있는 어노테이션이다.

    • JUnit4에서는 메서드의 이름만 출력 가능했기 때문에, 테스트 맥락 등을 설명하기 위해 메서드 이름이 길어지는 문제가 있었다. 이 문제를 해결하기 위해 JUnit5 부터 추가되었다.

    • 영어 외에도 다양한 언어와 이모티콘까지 모두 출력 가능하다.

  • "메소드를 처음 본 사람이 이 테스트가 무엇을 테스트하는지 3초 안에 알아차리도록 하려면 어떻게 해야 좋을까요?"

    라는 종립님의 질문에 답하다가 D-C-I 패턴으로 테스트코드를 작성하는 방법을 학습했다.

Affimation (자기 선언)

  • 테스트 케이스를 모두 리팩토링하고 제출한다.

  • 솔직히 묻고 답한다.

Last updated