GTest处理“警告”情况的最佳方式?

时间:2014-10-20 16:38:44

标签: c++ unit-testing googletest

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

想到的想法:

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

  2. 重新运行测试/运行循环。但它正在使用一个测试夹具,它会有 在循环中调用或复制TearDown / SetUp。我再也没见过 GTest支持这一点;是否有任何 Flaky 测试支持?

  3. 向stdout发出警告,希望运行测试的人理解 影响。

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

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

    考虑到输入生成的随机性,我预计偶尔检查失败(<1%的运行),而 ,如果其他地方发生变化且检查失败< em>所有当时需要修复测试。

1 个答案:

答案 0 :(得分:0)

听起来我的单元测试很糟糕。

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

您应该将单元测试重写为确定性的。随机输入很糟糕,但预先确定的输入序列,即使它们看起来是随机的也可以。尝试并提出一组很好的输入值,可以测试算法的极端情况。

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