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);
}
}
안녕하세요. 한창훈님, 공식 서포터즈 OMG입니다.
직접 테스트하시는 모습 보기 좋습니다!!
완강까지 하시게 되면 그 과정속에서 궁금한 점을 찾아가시다 보면 일취월장 하시겠어요!ㅎㅎ
학습하시다 경험한 내용 공유해주셔서 감사합니다.^^
답글
창훈님 공유 감사합니다^^
답글
미춌따리 미춌따..
LogTrackerV1 클래스도 공유부탁드려도 될까요 ?ㅠ
답글