c++ - GTest 中处理 "warning"情况的最佳方法?

标签 c++ unit-testing googletest

使用 GTest,如果测试检测到测试运行没有意义的情况,测试应该做什么?

脑海中浮现的想法:

  1. 通过 GTest 发出警告,该警告将列在运行结束摘要中。 但我在框架中什么也没看到,所以不认为它存在。

  2. 重新运行测试/循环运行。但它使用的是测试夹具,它会有 在循环中调用或复制 TearDown/SetUp。再一次,我什么也没看到 GTest 支持这个;是否有任何类型的Flaky测试支持?

  3. 向标准输出发出警告并希望运行测试的人理解 影响。

  4. 只是盲目地忽略这个问题。

此实例的详细信息:我有一个处理并行线程输出排序的函数。单元测试检查线程的某些输出是否乱序。因此,如果检查失败,则测试几乎没有意义。

考虑到输入生成的随机性,我预计偶尔会有失败的检查(<1% 的运行),虽然它不是失败,但如果其他地方发生变化并且检查失败所有然后测试需要修复。

最佳答案

我觉得你的单元测试很糟糕。

单元测试应该是确定性的,但您的单元测试具有随机输入。假设它有 1% 的时间失败。如果失败,如果每次运行时输入都不同,您期望如何调试单元测试?

您应该重写您的单元测试以使其具有确定性。随机输入是不好的,但是预先确定的输入序列,即使它们看起来是随机的也是可以的。试着想出一组好的输入值来测试算法的极端情况。

如果这是不可能的,即使是这样,您也应该确保该算法也在您的集成测试套件中进行了压力测试。

关于c++ - GTest 中处理 "warning"情况的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26470624/

相关文章:

c++ - 在测试中,有没有办法防御来自未定义行为的 "correct"结果?

c++ - Gtest : mocking free function in a constructor

c++ - 产生错误 "expression must be a modifiable lvalue"

android - 如何将 Active Android 与内存数据库结合使用以使用 Robolectric 进行单元测试?

python - 对特定于实现的数据库使用情况进行单元测试

.net - 什么是红/绿测试?

c++ - 来自 gmock 的 DefaultValue 的范围问题

Java 与 C++ 套接字通信、DataInputStream 和 eof、二进制、加密

c++ - C/C++ 转换为程序集,低级内存行为 : how is it done?

c++ - Windows Universal - 如何检查用户是否已登录 Microsoft 帐户?