코드숨 3주차(8/23~8/29) 주간회고

UkJJang·2021년 8월 29일
0

Fact

  • Spring 테스트 코드 작성
  • Spring Framework 공부

Feelings

  1. 3주차는 2주차에 만들었던 Spring을 이용하여 작성한 TODO 과제에 테스트 코드를 작성하는 것이였다. 테스트 코드 작성은 처음이였기 때문에 새롭게 알게된 내용들이 많았다.
  • 첫번째로 Junit의 assertEquals와 AssertJ를 처음 사용해 보았다.

[처음에 작성한 테스트코드]


  private TaskService taskService = new TaskService();
  private TaskController taskController = new TaskController(taskService);
  
  @BeforeEach
  @DisplayName("초기화")
  void setUp() {
      Task task1 = new Task();
      task1.setTitle("test1");

      Task task2 = new Task();
      task2.setTitle("test2");

      Task task3 = new Task();
      task3.setTitle("test3");

      taskController.create(task1);
      taskController.create(task2);
      taskController.create(task3);

  }

  @Test
  @DisplayName("전체조회")
  void list() {

      assertThat(taskController.list()).hasSize(3);

  }
  

내가 봐도 정말 테스트코드가 정말 불친절했다. 다른사람이 본다면 무슨 테스트를 하는거지? 생각을 할 것 같았다.

[D-C-I 패턴을 참고하며 작성한 테스트코드]
https://johngrib.github.io/wiki/junit5-nested/ 종립님의 게시글을 참고하며 작성했습니다.

  private TaskService taskService = new TaskService();
  private TaskController taskController = new TaskController(taskService);

  private final String[] TASK_TITLE = {"test1", "test2", "test3", "test4", "test5"};
  private final String TASK_UPDATE = "update";
  private final Long VALID_ID = 1L;
  private final Long INVALID_ID = 100L;

  @Nested
  @DisplayName("list 메소드는")
  class Describe_list {

      @Nested
      @DisplayName("tasks 리스트에 값이 존재하면")
      class Context_exist_tasks {

          @BeforeEach
          @DisplayName("list에 값을 세팅해줍니다")
          void tasks_setUp() {

              for (int i = 0; i < TASK_TITLE.length; i++) {
                  Task task = new Task();
                  task.setTitle(TASK_TITLE[i]);
                  taskController.create(task);
              }

          }

          @Test
          @DisplayName("task 객체들을 리턴한다")
          void It_return_tasks() throws Exception {

              Assertions.assertThat(taskController.list()).hasSize(5);

          }

      }

D-C-I 패턴으로 작성한 결과 계층적으로 테스트 코드 결과를 확인할 수 있었다. 실패할 경우 어디가 문제인지 금방 찾을 수 있고 다른 사람이 볼때도 어떤 테스트를 하는지 이해하기 더 쉬울것 같았다.

  • Mock / Mockito / BDDMockito 에 대해서 처음 알게 되었다.

    Mockito 의 메소드는 적용해 보면서 익숙해 졌지만 아직까진 BDDMockito의 given 메소드의 사용을 어떻게 해야하는지 이해를 하지 못했다.

    Finding

  • 테스트 코드 작성하는걸 습관화 하고 나만 보는게 아닌 다른사람이 봣을 때도 이해가 가기 쉽도록 작성하는 노력을 해야겠다.

  • 공부를 할 때 공부한 내용을 정리하면서 해보았다. 확실히 그만큼 시간을 더 걸리지만 이해하는 데는 큰 도움이 된 것 같다. 앞으로도 꾸준하게 정리하는 습관을 들여야겠다.

  • Junit & AssertJ 정리
    https://velog.io/@gudnr1451/Junit-AssertJ-%EA%B8%B0%EB%B3%B8%EC%A0%95%EB%A6%AC

  • Mock 정리
    https://velog.io/@gudnr1451/Mockito-%EB%9E%80

    Affirmation

  • 일주일에 학습한 내용 2~3개 정리해서 작성하기

  • 회고 글 꾸준하게 작성하기

  • 1~3주차간 했던 과제들 복습하기

  • Spring Framework & JPA 강의듣기

profile
꾸준하게 성실하게

0개의 댓글