테스트 코드
✔ 테스트 코드 적용 이유
💬 CI에는 자동 테스트가 있을 때 더 빛을 발한다고 생각한다. 테스트 코드는 합칠 때 작성한 코드들이 문제가 없음을 보여줄 수 있는 근거이기 때문이다. 팀원들과 논의를 거쳐 이러한 이점을 위해 각 기능을 구현할 때 비즈니스 로직은 테스트 코드를 작성하기로 했다.
✔ 테스트 코드 이점
💬 테스트 코드는 비즈니스 로직을 짤 때 가장 이점이 많은 것 같다. 중요한 로직에서 발생할 수 있는 버그를 사전에 예방할 수 있다. 코드에서 빼먹은 로직을 확인하고 보충할 수도 있다.
✔ Mock의 사용
💬 실제로 테스트 코드를 짜다 보니 Service에 들어가는 비즈니스 로직에는 DB 통신 부분이 대부분 들어간다는 것을 알았다. 통신 부분을 그대로 유지한 체 테스트를 한다면 우리가 짜놓은 비즈니스 로직은 DB 서버 이상에 의해서도 에러를 내뱉을 수도 있다. 그래서 DB 통신 부분을 대체하기 위해 Mock은 단위 테스트를 하는 데에 있어 사용되어야 한다고 생각한다.
✔ Mock 적용 방법
1. Junit5은 Class에 어노테이션을 붙여줘야 한다.
➡ @ExtendWith(MockitoExtension.class)
2. Mock으로 만들려는 객체에 어노테이션을 붙여줘야 한다.
➡ @Test
✔ Mock 이슈
💢 Mock 객체가 초기화되지 않고 null이 발생하는 문제
✅ Mock 어노테이션을 통해 생성되는 객체는 Test 어노테이션이 선언된 메서드 안에서 실행이 되어야 초기화가 된다.
➡ @Test
void test() {
Mock 객체 사용
}
💢 Mokito에서 제공하는 any()가 에러를 발생시키는 문제
✅ Mokito에서 제공하는 any(), anyLong() 등은 Mock 객체에서만 사용이 가능하다. 일반 객체에서 사용할 경우 에러가 발생
'개발일지 > TIL' 카테고리의 다른 글
[230805] [파이널] 프로젝트 진행 (4) (0) | 2023.08.05 |
---|---|
[230804] [파이널] 프로젝트 진행 (3) (0) | 2023.08.04 |
[230802] [파이널] 프로젝트 진행 (1) (0) | 2023.08.02 |
[230801] [파이널] 기획 및 S.A 작성 (5) (0) | 2023.08.01 |
[230731] [파이널] 기획 및 S.A 작성 (4) (0) | 2023.07.31 |