TDD

@DisplayName 어노테이션으로 UnitTest 가독성 높이기

realforceman 2022. 2. 27. 13:24
728x90
    @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