4

내 애플리케이션에 일부 로깅이 있습니다 (그럴 경우 log4cxx이지만 유연함). 그리고 부스트 유닛 테스트 프레임 워크를 사용하는 일부 단위 테스트가 있습니다. 단위 테스트를 실행하면 합격 및 불합격 테스트 (로깅 된 어설 션뿐만 아니라 내 응용 프로그램 코드의 디버그 로깅도)에서 많은 로그 출력을 얻습니다. 단위 테스트 프레임 워크가 통과하는 테스트 중에 로그를 버리고 실패한 테스트의 로그를 출력하고 싶습니다. (파이썬/코를 사용하면서이 동작에 감사하게되었습니다.)부스트 유닛 테스트로 인한 실패에 대해서만 로그 출력을 얻을 수 있습니까?

부스트 유닛 테스트 프레임 워크로 이것을 수행하는 표준 방법이 있습니까? 그렇지 않다면 로그를 버퍼링하고 조건 적으로이 동작을 직접 구현하기 위해 사용할 수있는 테스트 시작/테스트 종료 후크가 있습니까?

답변

-1

Boost.Test documentation에 따르면 --log_level=error으로 테스트 실행 파일을 실행하십시오. 이것은 실패한 테스트 케이스 만 잡을 것입니다.

나는 올바르게 작동하는 프로젝트에서 수천 개의 단위 테스트를 사용하여 BOOST_CHECK(false)을 사용하여 작동하는지 확인했습니다.

--log_level=all으로 실행하면 모든 어설 션 결과가됩니다. 로그에있는 줄 수는 테스트의 어설 션 수 (정확하게 숫자는 --report_level=detailed으로보고 됨)와 정확히 동일하다는 것을 wc -l으로 연결하여 확인했습니다. 물론 grep 문자열의 로그 error 또는 failed 일 수도 있습니다.

+0

로그 자체가 부스트에서 로그를 제어하지만 응용 프로그램 자체의 디버그 로그를 제어하는 ​​데 도움이되지 않습니다. – kdt

+0

@kdt 그럼 나는 따르지 않습니다. "나는 로그 출력을 많이받습니다. 테스트 "? 당신의 프로그램 내부 어디에서 그들을 붙잡고 있습니까? 'std :: regex'를 "failed"나 "error"에 사용할 수 있고 구매할 때 떨어 뜨릴 수 있습니다. – TemplateRex

+0

내 코드는 모든 종류의 디버그 로깅을 수행합니다. 내가하고 싶은 것은 모든 것을 버퍼링 한 다음, 테스트가 실패하면 출력하고, 통과하면 버려야한다는 것이다. 내가 "테스트"라고 말하면, 테스트를 실행할 때 실행되는 모든 코드를 의미합니다. 대답이 "아니요, 부스트 단위 테스트가 그걸 위해 후크를 제공하지 않는다면"괜찮습니다. – kdt