문제

Windows에서 실패한 Assert 문서는 아래 디버그 메시지가 나타나고 응용 프로그램 실행을 동결하게합니다. 나는 이것이 예상되는 동작이라는 것을 알고 있지만 헤드리스 시스템에서 주기적으로 실행되고 있으므로 장치 테스트가 실패하지 않도록하는 대신 사용자 입력을 무기한으로 대기합니다.

SA 레지스트리 키 또는 컴파일러 플래그가 있습니까?이 메시지 상자가 사용자 입력을 요청하는 것을 방지하는 데 사용할 수있는 동안 테스트가 여전히 테스트에 실패 할 수 있습니까?

기본적으로 코드를 수정하지 않고 컴파일러 또는 Windows 옵션을 변경하지 않고이 작업을 수행하고 싶습니다.

감사!

Microsoft Visual C ++ Debug 라이브러리 Assert http://img519.imageshack.us/img519/853/snapshotbu1.png

도움이 되었습니까?

해결책

Assert 매크로에 대한 MSDN에서 :

MFC ISAPI 응용 프로그램에서 디버그 모드의 어설 션은 모달 대화 상자를 가져옵니다 (Assert 대화 상자는 이제 기본적으로 모달입니다). 이것은 실행을 방해하거나 매달린다. 모달 어설 션 대화 상자를 억제하려면 프로젝트 소스 파일 (ProjectName.cpp)에 다음 줄을 추가하십시오.

// For custom assert and trace handling with WebDbg
#ifdef _DEBUG
CDebugReportHook g_ReportHook;
#endif

이 작업을 마치면 WebDBG 도구 (WebDBG.exe)를 사용하여 어설 션을 볼 수 있습니다.

다른 팁

_crt_assert 유형 보고서에 대한 _crtdbgreport가 표시하는 대화 상자라고 생각합니다. _crtsetreporthook을 사용하면 전체 응용 프로그램에 해당 동작을 조정할 수 있습니다. (즉, 하나의 로컬 변경이 필요합니다.) 특히, 당신은 주장에 실패한 후에도 실행을 계속할 수 있으므로 그것을 무시할 수 있습니다.

단위 테스트 컨텍스트에서는 종종 어제를 변환하는 것이 좋습니다 (실제로 _CrtDbgReport 호출) 일부 예외, 일반적으로 STD :: 예외는 유익한 텍스트를 포함합니다. 이것은 실패로 단위 테스트의 출력 로그로 나가는 경향이 있습니다. 그것이 바로 당신이 원하는 것입니다. 실패한 주장은 실패한 단위 테스트 여야합니다.

다음을 사용하여 지정된대로 보고서 훅 기능을 던져서 수행하십시오. _CrtSetReportHook()

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top