如何在谷歌测试中断言执行时间
How to assert execution time in Google Test?
我正在使用Google的C++测试框架Gtest。我想针对其测试一个函数执行时间,例如,如果函数 foo() 的执行时间超过 3ms,则执行时间将失败。我找不到 ASSERT 语句来实现这一点。gtest 不包括这样的功能吗?
为什么不使用这么简单的解决方案?
//pseudo code
clock_t t = clock();
foo();
const double work_time = (clock() - t) / double(CLOCKS_PER_SEC);
ASSERT_TRUE(work_time <= 0.003);
可能不存在,因为该错误仍然处于打开状态:http://code.google.com/p/googletest/issues/detail?id=348
我找到了一种方法来使用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 个已禁用的测试
框架测试.cpp(39): 错误: 预期:(已用)<(测量性能 ? 190 * 1000 : 170 * 1000), 实际:207723 与 170000
相关文章:
- 类成员和中断
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- C++ 使用增强正则表达式库时断言崩溃
- 我的代码运行良好,但在游戏循环中中断
- 使用带有MCP23017的 pigpio 进行中断读取
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 为什么我在 AVR 中的中断无法正常工作?
- 如何将向量断言到特征矩阵
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 使用 Google Test 对自定义断言函数进行单元测试
- 断言"id < 0"在Qt ActiveX中失败
- 使用 UDP 中断 while()-循环
- C++:在不中断共享的情况下通过引用传递共享 PTR?
- 初始值设定项列表构造和静态断言
- 如何在 CompleteAsyncIO 中访问 IOMemoryBufferDescriptor,该描述符通过中断 EP
- 如何为伺服电机创建中断或返回值?
- 开关:无外壳中断
- 如何使用中断停止循环?