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