googletest:如果测试失败,则执行其他操作

mem*_*ecs 6 c++ debugging opencv unit-testing 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);
}
Run Code Online (Sandbox Code Playgroud)

hil*_*sia 6

还有的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
  }
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅 https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#checking-for-failures-in-the-current-test.

  • 几乎!`ASSERT_GT()`将在`imwrite()`调用有机会之前进行救助.替换为`EXPECT_GT()`,并使用显式的`FAILURE()`语句来挽救测试用例. (3认同)