gpt4 book ai didi

c++ - 是否有任何标准技术、机制和工具用于生成异常以与测试代码一起使用以彻底测试 C++?

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:33 25 4
gpt4 key购买 nike

使用 Symbian 版本的 C++ 可以精确控制低内存条件的模拟,从而根据分配失败为代码中所有可能的执行路径组合确定性地生成一个 leave(一个 leave 在 Symbian C++ 中等同于一个 throw) .

这对于测试目的非常有用,因为 Symbian 中的绝大多数叶/异常(即在受限设备上)都是内存不足的结果,这实际上意味着您可以彻底测试代码的异常安全性。这总是会揭示很多很多缺陷,包括许多与异常处理无关的缺陷。

对于那些手边有 Exceptional C++ 拷贝的人,请参阅第 18 项 - 想象一下能够很容易地生成条件来测试通过该代码的所有 23 条执行路径以及随之而来的好处。

所以我的问题是,是否有任何机制、技术或工具可以让您在测试代码中生成异常以彻底测试代码的异常处理?

假设您必须对 Exceptional C++ 的第 18 项中的代码进行白盒测试(请不要讨论说代码应该重写,假设它不能重写)您如何测试它以确保所有23条执行路径正在测试代码中执行?


这个问题与 Symbian 无关,我用它来提供一些上下文,以从经验中说明能够确定性地控制异常生成以用于测试目的的不可思议的好处,因此想知道如何在标准 C++ 中实现相同的目的.

最佳答案

您可以替换 global operator new,因此通过它的任何分配现在都会通过您的代码。然后在该代码中,当分配失败并抛出异常时,执行您想要控制的任何操作。我实际使用的唯一策略是分配器中的一个简单计数器。首先运行代码,使其第一次分配失败,然后在第二次分配失败的情况下重新运行,依此类推,直到被测代码完成而计数器未达到会触发制造失败的值。在每个步骤中,检查内存泄漏并执行任何其他测试以确保结构的一致性。

关于c++ - 是否有任何标准技术、机制和工具用于生成异常以与测试代码一起使用以彻底测试 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com