gpt4 book ai didi

objective-c - 由于 NSAssert 断言失败,测试失败

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:41 25 4
gpt4 key购买 nike

我刚刚开始为我的 iOS 应用程序编写测试,我使用的是 Xcode4 和 OCUnit。我现在正在为一段代码编写测试,如果已经分配了一个静态变量,它应该抛出异常,如下所示:

NSAssert(controllerInstance == nil, @"another controller is already in use!");

在我的测试中,我使用 STAsertThrows 检查如果实例已经存在,上面的代码是否抛出错误。问题是这个测试失败了:

*** Assertion failure in (reference to row with NSAssert)

所以测试失败了,即使行为正是我想要的。但是 STAsertThrows 不应该捕捉到这个吗?也许我不应该以这种方式将 NSAssert 与 STAsertThrows 一起使用?

最佳答案

我认为 assertion handler在引发异常的之前 打印该消息。如果不是这样,STAsertThrows() 可能会忽略断言失败。

无论如何,您为什么要测试 NSAssert 是否有效?您不信任 Cocoa 框架吗?

编辑

刚注意到您问题的第二部分。答案是否定的,您不应该以这种方式同时使用 STAsertThrows 和 NSAssert。 NSAssert() 用于发现编程错误的情况,其中程序员的假设是错误的。根据定义,断言的一段代码未通过其测试用例。

关于objective-c - 由于 NSAssert 断言失败,测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6422330/

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