inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Practical Testing: 실용적인 테스트 가이드

테스트하기 어려운 영역 분리에서 질문이 있습니다.

142

shmin11

작성한 질문수 2

0

public class GenerateUUIDAndTimestp {

    public static UUIDAndTimestpDto generateTidAndTimestp() {

        String uuid = UUID.randomUUID().toString();
        //  하이픈 제거
        String uuid2 = uuid.replace("-", "");

        String epochTime = String.valueOf(System.currentTimeMillis() / 1000);

        return new UUIDAndTimestpDto(uuid2, epochTime);
    }
}

 

안녕하세요. 학습 후 테스트를 적용해볼려고 하고 있는데요.
이런 식으로 UUID와 epochTime을 쉽게 사용할려고 유틸리티 클래스와 스태틱 메서드를 만들었습니다. 테스트를 위해 테스트 하기 어려운 부분을 분리하라고 하셨는데요. 해당 부분을 어떻게 테스트 해야할 지 모르겠습니다 ㅜㅜ
UUID야 인자로 뺄 수 있지만 System은 정적 클래스인데 인자로 빼기 어려운 부분과
쉽고 간편하게 사용할려고 만든 메서드인데 UUID나 System을 계속 인자로 넣어야 하나 하는 부분이 고민이 들게 만듭니다.

강의 잘 듣고 있습니다 감사합니다.

spring tdd jpa mockito 소프트웨어-테스트 junit5

답변 1

0

박우빈

안녕하세요, shmin11 님!

항상 테스트하기 어려운 부분을 외부로 분리하는 것이 더 나은 방법은 아닙니다.
테스트하고자 하는 객체의 특성을 잘 보셔야 하는데요.

말씀주신 GenerateUUIDAndTimestp 클래스는 유틸성 클래스로 보입니다.
즉, 여기저기 필요한 곳에서 각각 호출하여 UUID와 timestamp를 발급받기 위한 헬퍼 클래스로 보이는데요.
이 경우 테스트를 위해서 랜덤 생성 로직이나, System 관련 메서드를 외부로 분리하는 경우 유틸 클래스가 더이상 유틸 클래스가 아니게 될 것 같아요.
사용하는 모든 곳에서 랜덤 생성 로직과 System 메서드를 넣어주어야 할테니까요.
유틸 클래스는 내부 로직을 외부에서 알 필요 없도록 블랙박스 처리가 잘 되어 있고, 사용하기 편하게끔 하는 것이 목적입니다.

저라면, 다음과 같은 케이스를 검증할지 고려해 보겠습니다.

  • 반환되는 DTO 안에 내용이 잘 채워져 있는지 (존재 여부)

  • 사용하려는 UUID String은 내가 원하는 길이가 맞는지

테스트하고자 하는 대상이 어떤 성격을 가지고 있는지, 꼭 필요한 테스트 케이스는 무엇이 있을지, 항상 여러모로 고민해 보는 것이 좋습니다 ㅎㅎ

도움이 되셨기를 바랍니다.
감사합니다 🙂

0

shmin11

많은 도움 되었습니다. 감사합니다!

private 상수 테스트 관련 질문

0

87

1

void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??

0

128

2

커버리지는 어떻게 활용하시는지 궁금합니다.

0

163

2

테스트 문서화 질문입니다

0

107

2

단위테스트 질문이 있습니다

0

96

2

컨트롤러는 모킹을 한 이유가 궁금합니다.

0

106

2

ERD 가장자리에 있는 도메인 테스트 질문

0

90

2

DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?

0

136

2

OrderCreateRequest DTO에 대해서 궁금한점

0

104

2

고전파의 테스트 대역 사용 대상, 공유 의존성

0

157

2

계층 관련 질문이 있습니다.

0

140

3

'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다

1

124

2

혹시 update 로직은 어떻게 테스트하나요? (@Setter?)

0

135

2

단위테스트와 통합테스트의 경계가 궁금합니다.

0

235

2

Service+Repository 통합테스트 관련 질문입니다.

0

151

2

OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요

0

186

2

test 용 .yml

0

91

2

throws Exception

0

81

2

카페키오스크 클래스 문의 ,,

0

90

2

Rest docs 문서용 테스트코드를 따로 작성해야 되나요?

0

176

2

테스트 코드에서 필요한 생성자

0

139

1

tearDown 순서

0

116

2

@Builder 생성자 private

0

137

2

@DisplayName gradle / intellJ

0

94

2