如何在Google Test中断言执行时间?

时间:2013-10-02 11:16:38

标签: c++ assert googletest

我正在使用Google的C ++测试框架Gtest。我想针对它测试一个函数 执行时间,例如函数foo()如果执行时间超过3ms则失败。 我找不到ASSERT语句来实现这一目标。 gtest不包含这样的功能吗?

3 个答案:

答案 0 :(得分:5)

为什么不使用这样简单的解决方案?

//pseudo code
clock_t t = clock();
foo();
const double work_time = (clock() - t) / double(CLOCKS_PER_SEC);
ASSERT_TRUE(work_time <= 0.003);

答案 1 :(得分:4)

可能不存在,因为错误仍然存​​在: http://code.google.com/p/googletest/issues/detail?id=348

答案 2 :(得分:1)

我找到了一种方法来使用GoogleTest为此打印的统计数据。这是在程序级别,但您可以在TearDownTestCase()中执行相同的操作以检查子集中的检查速度。这是因为有一个TestCase级elapsed_time成员函数。

int main(int argc, char* argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
    auto result(RUN_ALL_TESTS());
    ::testing::internal::TimeInMillis elapsed(
        ::testing::UnitTest::GetInstance()->elapsed_time());
    ASSERT_LT(elapsed, measurePerf ? 180 * 1000 : 215 * 1000);
    return result;
}

代表性成果:

  

[==========]来自18个测试用例的338个测试运行。 (总共207723毫秒)[   通过] 338次测试。

     

你有13项残疾测试

     

FrameworkTest.cpp(39):错误:   预期:(已过去)&lt; (measurePerf?190 * 1000:170 * 1000),   实际:207723 vs 170000