C++ googletest:如果测试失败,则执行附加操作

C++ googletest:如果测试失败,则执行附加操作,c++,unit-testing,debugging,opencv,googletest,C++,Unit Testing,Debugging,Opencv,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); } 有Test::HasFailure()、Test::

我希望能够将数据保存到磁盘,以防测试失败。有没有办法在谷歌测试框架内做到这一点

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);
}

Test::HasFailure()
Test::hasnotatalfailure()
Test::HasFailure()
函数,如果发生(致命/非致命)故障,它们将返回
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
  }
}

详细信息。

差不多了
ASSERT_GT()
将在
imwrite()
调用有机会之前进行紧急救援。替换为
EXPECT\u GT()
,并使用显式的
FAILURE()
语句紧急退出测试用例。我在回答中更改了它。请添加提到的
FAILURE()
语句,以保留原始的测试用例行为。我认为它的
FAIL()
,添加了这一点。