使用GTest,如果测试检测到测试运行没有意义的情况,测试应该做什么?
想到的想法:
通过GTest发出警告,这将列在运行结束摘要中。 但是我在框架中什么都没看到,所以不要认为这存在。
重新运行测试/运行循环。但它正在使用一个测试夹具,它会有 在循环中调用或复制TearDown / SetUp。我再也没见过 GTest支持这一点;是否有任何 Flaky 测试支持?
向stdout发出警告,希望运行测试的人理解 影响。
只是盲目地忽略这个问题。
此实例的详细信息:我有一个处理并行线程排序输出的函数。单元测试检查线程的某些输出是否有故障。因此,如果检查失败,则测试几乎毫无意义。
考虑到输入生成的随机性,我预计偶尔检查失败(<1%的运行),而
答案 0 :(得分:0)
听起来我的单元测试很糟糕。
单元测试应该是确定性的,但单元测试具有随机输入。假设1%的时间失败。如果您遇到故障,如果每次运行它时,您希望如何调试单元测试?输入会有所不同?
您应该将单元测试重写为确定性的。随机输入很糟糕,但预先确定的输入序列,即使它们看起来是随机的也可以。尝试并提出一组很好的输入值,可以测试算法的极端情况。
如果这是不可能的,或者即使是这样,你应该确保在集成测试套件中对算法进行压力测试。