이전 내배캠 과정중에 진행했던 프로젝트나 개인과제때는 테스트코드를 작성하지 않고 제출했었는데 이번에는 최종 프로젝트여서 모두가 필수로 작성해서 완료하자 라는 회의내용이 있어서 테스트코드를 작성하는 법을 새로 배웠습니다.
테스트코드는 말 그대로 우리가 구현한 기능들이 정상적으로 작동하는지 실험하기 위해 작성하는 코드입니다.
형식은 [given / when / then] 이 3가지 구성으로 이루어져 있고, 테스트에 필요한 가상의 객체나 함수인 Mock 을 생성해 준 뒤 //given 에서 그 값을 생성해줍니다. //when 에서 테스트할 메서드를 실제로 동작시키는 메서드를 구현하고 //then 에서 예상한 결과값이 실제 값이랑 맞게 출력됐는지 확인해주는 메서드를 입력하는 과정을 통해 테스트코드를 작성합니다.
제가 직접 만들어본 테스트코드가 여러개 있긴한데 아이디 중복 UserServiceTest 코드를 아래에 첨부해두겠습니다.
class UserServiceTest implements UserTest {
@Mock UserRepository userRepository;
@InjectMocks UserService userService;
@Test
@DisplayName("아이디 중복 테스트")
void verifyUsernameTest() {
// given - 필요한 변수 생성
UsernameVerifyReq req = UsernameVerifyReq.builder().username(TEST_USER_USERNAME).build();
when(userRepository.existsByUsername(any())).thenReturn(true);
// when - 테스트할 메서드를 실제 동작
UsernameVerifyRes res = userService.verifyUsername(req);
// then - 결과 제대로 나왔는지 확인
assertTrue(res.getIsDuplicated());
}
}
위 코드는 UserService 클래스 내부의 verifyUsername 메서드를 테스트하는 코드입니다. 감사합니다.
'개발노트' 카테고리의 다른 글
[TIL] 쿠키 / 세션 / 캐시 (0) | 2024.05.24 |
---|---|
최종 팀 프로젝트(7) - 네이버 소셜로그인 (0) | 2024.01.15 |
최종 팀 프로젝트(6) - 카카오 소셜로그인 (0) | 2024.01.13 |
최종 팀 프로젝트(5) - Builder와 Mapper (0) | 2024.01.10 |
최종 팀 프로젝트(4) - 커밋 안했을때 실수 돌이키기 (0) | 2024.01.09 |