Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GTest中处理“a”的最佳方法;警告";情况如何?_C++_Unit Testing_Googletest - Fatal编程技术网

C++ GTest中处理“a”的最佳方法;警告";情况如何?

C++ GTest中处理“a”的最佳方法;警告";情况如何?,c++,unit-testing,googletest,C++,Unit Testing,Googletest,使用GTest,如果测试检测到测试运行没有意义的情况,测试应该做什么? 脑海中浮现的想法: 通过GTest发出警告,该警告将列在运行结束总结中。 但我在这个框架中什么都没看到,所以我认为这是不存在的 在循环中重新运行测试/运行。但它使用的是一个测试夹具 调用或复制循环中的拆卸/设置。我又一次什么都没看到 GTest支持这一点;是否存在任何类型的片状测试支持 向stdout发出警告,并希望运行测试的人员理解 影响 只是盲目地忽视这个问题 这个实例的细节:我有一个函数,它处理来自并行线程的排序输出。

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

脑海中浮现的想法:

  • 通过GTest发出警告,该警告将列在运行结束总结中。 但我在这个框架中什么都没看到,所以我认为这是不存在的

  • 在循环中重新运行测试/运行。但它使用的是一个测试夹具 调用或复制循环中的拆卸/设置。我又一次什么都没看到 GTest支持这一点;是否存在任何类型的片状测试支持

  • 向stdout发出警告,并希望运行测试的人员理解 影响

  • 只是盲目地忽视这个问题

  • 这个实例的细节:我有一个函数,它处理来自并行线程的排序输出。单元测试检查线程的某些输出是否出现故障。因此,如果检查失败,测试几乎毫无意义


    考虑到输入生成的随机性,我预计偶尔会有一次失败的检查(我觉得您的单元测试很糟糕

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

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


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

    我认为你需要重构或删除你的测试。gtest如何能够检测到一个测试是有意义的,我觉得这是作者的工作,以确保它是有意义的。6年后,但你应该模拟out线程的输出,这样你就可以控制输入是无序的。你似乎误解了我的问题——这是关于如何向框架表明测试既不通过也不失败。这就是为什么我在末尾添加了“细节”,但除此之外,我严重不同意你的观点“单元测试应该是确定性的”--在任何中等复杂的算法中,这都会人为地严重限制覆盖范围,没有任何好处。在这种情况下,它有几十个并行线程,但即使使用PRNG,也只需打印PRNG种子并(用于调试)有一种机制,可以将种子注入测试。我没有误解你的问题。我认为你误解了单元测试应该是什么、应该做什么以及它们的限制。单元测试不应该取代软件的所有测试。它们只意味着单独测试软件中的每个单元,以便在集成单元后,您有信心每个单元都能按照指定的方式工作。我鼓励您阅读和查找有关单元测试的广泛可用的文献。