2014-02-19 3 views
3

테스트가 실패 할 경우를 대비하여 데이터를 디스크에 저장할 수 있습니다. googletest 프레임 워크 내에서이를 수행 할 수있는 방법이 있습니까?googletest : 테스트 실패시 추가 작업 수행

TEST_F(test_similarity,are_similar) { 

    ASSERT_GT(1e-10,norm(im0,im1)); 

    // If test fails save images to disk for comparison: 
    imwrite("im0.png",im0); 
    imwrite("im1.png",im1); 
} 

답변

4

은 (치명적/비 치명적) 실패가 발생했을 경우 true를 반환 Test::HasFailure(), Test::HasFatalFailure()Test::HasNonfatalFailure()과 기능이있다. 당신은 그들을 확인하기 위해 사용할 수 있습니다.

TEST_F(test_similarity,are_similar) { 

    EXPECT_GT(1e-10,norm(im0,im1)); // Note the change to EXPECT 

    // If test fails save images to disk for comparison: 
    if(HasFailure()) { // if not in a TEST, use ::testing::Test::HasFailure() 
    imwrite("im0.png",im0); 
    imwrite("im1.png",im1); 
    FAIL(); //We want to fail fatally; use ADD_FAILURE() to fail non-fatally 
    } 
} 

은 자세한 내용 https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#checking-for-failures-in-the-current-test를 참조하십시오.

+2

거의! 'imSS()'호출 전에 기회가 생기기 전에'ASSERT_GT()'가 구제됩니다. 'EXPECT_GT()'로 바꾸고, 명시 적'FAILURE()'문을 사용하여 테스트 케이스를 구제하십시오. –

+0

참. 나는 대답에서 그것을 바꿨다. – hildensia

+0

앞에서 언급 한'FAILURE()'문을 추가하여 원래의 테스트 케이스 동작을 유지하십시오. –

관련 문제