[처음에 작성한 테스트코드]
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 메소드의 사용을 어떻게 해야하는지 이해를 하지 못했다.
테스트 코드 작성하는걸 습관화 하고 나만 보는게 아닌 다른사람이 봣을 때도 이해가 가기 쉽도록 작성하는 노력을 해야겠다.
공부를 할 때 공부한 내용을 정리하면서 해보았다. 확실히 그만큼 시간을 더 걸리지만 이해하는 데는 큰 도움이 된 것 같다. 앞으로도 꾸준하게 정리하는 습관을 들여야겠다.
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
일주일에 학습한 내용 2~3개 정리해서 작성하기
회고 글 꾸준하게 작성하기
1~3주차간 했던 과제들 복습하기
Spring Framework & JPA 강의듣기