inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 고급편

로그 추적기 V1 - 프로토타입 개발

콘솔 로그를 테스트하는 방법에 대해 알아봤습니다.

852

한창훈
1

void 메서드는 어떻게 테스트해야할 지 고민해본 적은 있었는데, 콘솔 로그가 원하는대로 나오는지 테스트는 해본적이 없는 것 같습니다.

 

좋은 것 배워갑니다.

 

class LogTrackerV1Test {

    @Test
    void begin_end() throws Exception {
        // given
        ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
        Logger logger = (Logger) LoggerFactory.getLogger(LogTrackerV1.class);
        logger.addAppender(listAppender);
        listAppender.start();

        LogTrackerV1 tracker = new LogTrackerV1();

        // when
        TraceStatus status = tracker.begin("hello");
        tracker.end(status);

        // then
        List<ILoggingEvent> testLogs = listAppender.list;

        assertThat(testLogs).hasSize(2);
        assertThat(testLogs.get(0).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello");
        assertThat(testLogs.get(0).getLevel()).isEqualTo(Level.INFO);
        assertThat(testLogs.get(1).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello\\stime=[0-9]*ms");
        assertThat(testLogs.get(1).getLevel()).isEqualTo(Level.INFO);
    }

    @Test
    void begin_exception() throws Exception {
        // given
        ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
        Logger logger = (Logger) LoggerFactory.getLogger(LogTrackerV1.class);
        logger.addAppender(listAppender);
        listAppender.start();

        LogTrackerV1 tracker = new LogTrackerV1();

        // when
        TraceStatus status = tracker.begin("hello");
        tracker.exception(status, new IllegalArgumentException());

        // then
        List<ILoggingEvent> testLogs = listAppender.list;

        assertThat(testLogs).hasSize(2);
        assertThat(testLogs.get(0).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello");
        assertThat(testLogs.get(0).getLevel()).isEqualTo(Level.INFO);
        assertThat(testLogs.get(1).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello\\stime=[0-9]*ms ex=[a-zA-Z.]*");
        assertThat(testLogs.get(1).getLevel()).isEqualTo(Level.INFO);
    }

}

log junit5

답변 3

2

OMG

안녕하세요. 한창훈님, 공식 서포터즈 OMG입니다.

직접 테스트하시는 모습 보기 좋습니다!!

완강까지 하시게 되면 그 과정속에서 궁금한 점을 찾아가시다 보면 일취월장 하시겠어요!ㅎㅎ

학습하시다 경험한 내용 공유해주셔서 감사합니다.^^

 

 

2

김영한

창훈님 공유 감사합니다^^

0

soap

미춌따리 미춌따..

LogTrackerV1 클래스도 공유부탁드려도 될까요 ?ㅠ

테스트 가이드 강의 수강하고 프로젝트 진행 중 번외로 질문하고 싶은 것이 있어 문의남깁니다 !

0

458

1

github 관련 질문

0

410

1

모든 계층에 테스트 코드를 작성하는건 비효율적일까요?

0

623

1

안녕하세요 아직 다 못봤지만 질문이 있습니다.

0

596

1