【问题标题】:googletest: performing additional operation if test failgoogletest:如果测试失败则执行附加操作
【发布时间】:2014-02-19 21:28:40
【问题描述】:

我希望能够将数据保存到磁盘以防测试失败。有没有办法在 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);
}

【问题讨论】:

    标签: c++ unit-testing debugging opencv googletest


    【解决方案1】:

    如果出现(致命/非致命)故障,则有 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/advanced.md#checking-for-failures-in-the-current-test了解详情。

    【讨论】:

    • 几乎! ASSERT_GT() 将在 imwrite() 电话有机会之前进行救助。替换为EXPECT_GT(),并使用明确的FAILURE() 语句来拯救测试用例。
    • 是的。我在答案中更改了它。
    • 也请添加提到的FAILURE() 语句,以保留原始测试用例的行为。
    • 我认为是FAIL(),补充说。
    猜你喜欢
    • 2020-04-14
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多