gpt4 book ai didi

c++ - 测试抛出失败的函数

转载 作者:行者123 更新时间:2023-11-30 01:01:30 24 4
gpt4 key购买 nike

测试抛出失败的函数的最佳方法是什么?还是测试一个对失败相当免疫的功能?

例如;我有一个 I/O Completion Port 类,如果它不能正确初始化端口,它会在构造函数中抛出。这使用初始化列表中 CreateIoCompletionPortWin32 函数。如果句柄设置不正确——非空值——那么构造函数将抛出异常。我从未见过此功能失败。

我很确定这个(以及我的代码中的其他类似函数)如果它们失败时会正确运行,代码有 50 行长,包括空格,所以我的问题是

a) 是否值得测试它会抛出
b) 如果值得测试,如何测试?
c) 应该对简单的包装类进行单元测试吗?

对于 b) 我考虑过覆盖 CreateIoCompletionPort 并传递值。在单元测试中覆盖它,并在传入某个值时使其返回 0。但是,由于在构造函数中使用了它,因此它需要是静态的。这看起来是否有效?

最佳答案

如果您在 .NET 中执行此操作,则可以将 ExpectedException 属性添加到您的测试中:

[Test, ExpectedException(typeof(SpecificException), "Exception's specific message")]
public void TestWhichHasException()
{
CallMethodThatThrowsSpecificException();
}

如果抛出该类型并带有指定消息的异常,则测试将通过。该属性具有其他重载,包括具有 InnerExceptions 等。

关于c++ - 测试抛出失败的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7614/

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