2014-02-19 43 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

有所述Test::HasFailure()Test::HasNonfatalFailure()Test::HasFatalFailure()功能,即返回true如果有一個(致命/非致命)的故障。你可以用它們來檢查。

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

差不多! ASSERT_GT()會在'imwrite()'調用有機會之前解除。用'EXPECT_GT()'替換,並使用明確的'FAILURE()'語句來救援測試用例。 –

+0

是的。我在回答中改變了它。 – hildensia

+0

也請加上提到的'FAILURE()'語句,以保留原始測試用例的行爲。 –

相關問題