2017-01-23 6 views
0

내 애플 리케이션 코드에서 나는 스택 트레이스와 모든 것을 완벽하게 출력 할 수있는 예외 상황을 원한다.Logback/SLF4J - 스택 추적을 인쇄하지 못하도록하는 구성 설정이 있습니까?

이 상황에 대한 테스트 코드에서이 예외 처리를 테스트하기 위해 의도적으로 doThrow()을 테스트했지만 스택 추적이 없으면 부분적으로 로그가 어지럽히 지 않도록 방지하고 부분적으로는 스택 추적을 인쇄하는 시간 낭비 테스트 코드 필요가 없습니다.

내 logback-test.xml에서이 작업을 수행 할 수있는 방법이 있습니까?

답변

0

글쎄, 내가 해결 방법을 찾았지만 ... TDD 순수 주의자가 아닙니다. 시험 내 응용 프로그램 클래스에서

(실제로 일부 유틸리티 클래스가 될 수 후 어떤 응용 프로그램 클래스가 사용하는) 나는이 넣어 :이에서 LOGGER 라인을 변경 응용 프로그램 클래스에 다시

private boolean printErrorStackTrace = true; 
void setPrintErrorStackTrace(boolean doPrint){ 
    printErrorStackTrace = doPrint; 
} 

LOGGER.error(String.format("file was %s", documentFile), 
       printErrorStackTrace? e : null); 

그리고 내 시험 방법에 이걸 넣어 : 이것에

LOGGER.error(String.format("file was %s", documentFile), e); 

appClass.setPrintErrorStackTrace(false); 

는 ... 분명히 우리는 테스트 코드는 응용 프로그램 코드에 도달하는 것을 허용하지 말 것 ...하지만 물론 내가 대신 조건 절에 방법 getPrintErrorStackTrace()를 사용 할 수 ... 그리고 그 조롱 메서드를 호출합니다. 그러나 이보다 덜 이교 적이겠습니까? 또한 테스트를 돕기 위해 기능을 추가하지 말라는 의미입니다.

하지만 내 기록은 이제 훨씬 깨끗해 보입니다.