오늘 한일은 다음과 같다.
1. 어제 문제였던 @Mock어노테이션이 적용이 안 됐던 이유
2. 테스트 코드 작성
1. 어제 문제였던 어노테이션 문제는 단순한 문제였다.
@ExtendWith(MockitoExtension.class)
class ToDoServiceTest {
@Mock
ToDoRepository toDoRepository;
@InjectMocks
ToDoService toDoService;
@BeforeEach
public void setUp() {
MockitoAnnotations.initMocks(this);
}
}
어제 설정은 위의 코드 블록과 같다. 이렇게 선언을 했더니 Mock객체를 즉 가짜 객체를 생성하지 못하는 문제가 발생해서 테스트를 제대로 진행할 수 없는 상태가 됐는데 오늘 여러 정보를 찾아보니 드디어 문제를 해결했다. 해결방법은 다음과 같다. @ExtendWith(MockitoExtension.class) 선언은 Junit5에서 새롭게 나온 어노테이션 및 클래스 선언인데 Mockito에서 제공하는 확장기능을 사용할 수 있게된다. 그래서 아래의 초기화를 자동으로 해주는데 아래의 선언 때문에 초기화 에러가 발생해서 가짜객체를 생성할 수 없는 현상이었다. 따라서 해결하려면 아래와 같은 코드블록을 작성해 주면 된다.
@ExtendWith(MockitoExtension.class)
class ToDoServiceTest {
@Mock
ToDoRepository toDoRepository;
@InjectMocks
ToDoService toDoService;
}
2. 오늘은 테스트 코드를 작성하면서 테스트 코드 문법에 대해서 여러 공부를 했다. 테스트 코드를 어떠한 방식으로 작성해야 되는지 그리고 어떤 문법을 사용하는지 등등 여러 가지 코드를 작성했다. 대부분 given 쪽에는 테스트를 위한 객체를 생성하거나 내가 테스트할 때 꼭 필요하지 않은 부분을 given when 문법을 사용해서 stubbing 즉 특정 메서드가 호출 됐을 때 어떤 값을 반환하거나 예외를 발생시킨다. 이 부분이 물론 when에도 포함될 때도 있지만 아직은 가끔 헷갈린다.
마지막으로 Then에서 예상 결과를 확인하는데 assertions를 통해 확인한다.
위의 글을 바탕으로 service 마저 작성하고 오늘 하루를 마무리할 예정이다.
'내일 배움 캠프' 카테고리의 다른 글
2023-12-05 (2) | 2023.12.06 |
---|---|
2023-12-04 (3) | 2023.12.04 |
2023-11-30 (0) | 2023.12.01 |
2023-11-29 (1) | 2023.11.29 |
2023-11-28 (0) | 2023.11.28 |