使用 GTest,如果测试检测到测试运行没有意义的情况,测试应该做什么?
脑海中浮现的想法:
通过 GTest 发出警告,该警告将列在运行结束摘要中。 但我在框架中什么也没看到,所以不认为它存在。
重新运行测试/循环运行。但它使用的是测试夹具,它会有 在循环中调用或复制 TearDown/SetUp。再一次,我什么也没看到 GTest 支持这个;是否有任何类型的Flaky测试支持?
向标准输出发出警告并希望运行测试的人理解 影响。
只是盲目地忽略这个问题。
此实例的详细信息:我有一个处理并行线程输出排序的函数。单元测试检查线程的某些输出是否乱序。因此,如果检查失败,则测试几乎没有意义。
考虑到输入生成的随机性,我预计偶尔会有失败的检查(<1% 的运行),虽然它不是失败,但如果其他地方发生变化并且检查失败所有然后测试需要修复。
最佳答案
我觉得你的单元测试很糟糕。
单元测试应该是确定性的,但您的单元测试具有随机输入。假设它有 1% 的时间失败。如果失败,如果每次运行时输入都不同,您期望如何调试单元测试?
您应该重写您的单元测试以使其具有确定性。随机输入是不好的,但是预先确定的输入序列,即使它们看起来是随机的也是可以的。试着想出一组好的输入值来测试算法的极端情况。
如果这是不可能的,即使是这样,您也应该确保该算法也在您的集成测试套件中进行了压力测试。
关于c++ - GTest 中处理 "warning"情况的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26470624/