-
@DisplayName 어노테이션으로 UnitTest 가독성 높이기TDD 2022. 2. 27. 13:24728x90
@Transactional @DisplayName(휴대전화 번호를 사용해 인증코드 생성한다") @Test void check_generateAuthCode_when_registerPhone() { // Given final String given_phone = "01012341234"; // When final EntryUser entryUser = accountEntryService.generateAuthCodeToken(given_phone); // Then Assert.assertEquals(given_phone, entryUser.getPhone()); Assert.assertNotNull(entryUser.getAuthenticationCode()); Assert.assertFalse(entryUser.getAuthenticationCode().isEmpty()); Assert.assertEquals(0, entryUser.getAuthCodeRetryCounter()); Assert.assertNotNull(entryUser.getAuthCodeExpireDate()); }
한글을 이용해 부연 설명을 달아주면 좀 더 테스트케이스의 목적성 전달에 좋다고 생각합니다.
아래 테스트 케이스는 Junit을 이용해 @DisplayName 사용해 테스트 케이스 설명을 달아둔 코드 입니다.
저의 경우 Unit Test는 다음 3단계로 구성중입니다.
1. Given
유닛 테스트에서 주어진 데이터 입니다. 위 경우 휴대전화 번호 입니다.
2. When
테스트 할 서비스 코드 입니다.
3. Then
테스트 할 서비스 코드가 수행된디 기대되는 값을 검증 합니다. 위의 코드에서는 다음을 검증 합니다.
휴대전화 번호로 6자리 인증코드를 전송하였으니 디비에는 다음이 갱신되어 있어야 합니다.
1. entryUser(가입 진행중인 유저의 도메인) 가 생성됐고 해당 유저의 휴대전화 번호는 given에서 주어진 값과 동일
2. 인증코드는 널 이 아니다
3. 인증코드는 비어있지 않다. 여기서 지금은 6자리를 사용하고 있지만 추후 변경될수 있어 길이까지 체크하지 않았습니다.
4. 재시도 횟수는 최초 0이다.
5. 인증코드의 만료기간도 널 값이 아니다.
728x90'TDD' 카테고리의 다른 글
Intellij Codecoverage 확인하기 (0) 2022.02.27