首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GHAssertThrowsSpecific找不到类型NSRangeException

GHAssertThrowsSpecific找不到类型NSRangeException
EN

Stack Overflow用户
提问于 2011-07-19 02:23:50
回答 1查看 528关注 0票数 2

我第一次使用Xcode4和GHUnit来编写一些单元测试。所有的建议似乎都建议使用GHUnit,而不是OCUnit。

我有一个名为'myList‘的自定义集合对象,并通过传递一条消息来获取index:-1中的选择。因此,它正确地抛出了一个NSRangeException (来自底层可变数组)。

我正在努力用GHAssertThrowsSpecific断言来捕捉这一点。

下面这行代码不会编译声明为“未知类型名称”的NSRangeException。

代码语言:javascript
复制
GHAssertThrowsSpecific(s = [myList selectionAtIndex:-1],
            NSRangeException, @"Should have thrown an NSRangeException", nil);

我是#importing "Foundation/NSException.h",其中似乎定义了NSRangeException。如果我将其更改为:

代码语言:javascript
复制
GHAssertThrowsSpecific(s = [myList selectionAtIndex:-1],
            NSException, @"Should have thrown an NSException", nil);

然后编译得很好,断言也起作用了,所以它与NSRangeException有关。

如果我查看报头,NSRangeException似乎被定义为一个NSString * const,在这种情况下,我如何尝试断言我期望捕获它。

我显然很愚蠢,因为我看不出我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-26 03:06:07

好,我找到了这个问题的答案。

NSRangeException实际上只是一个指向包含"NSRangeException“的字符串的指针。

我应该使用GHAssertThrowsSpecificNamed而不是GHAssertThrowsSpecific,它接受命名异常的字符串的一个附加参数,如下所示:

代码语言:javascript
复制
GHAssertThrowsSpecificNamed(s = [myList selectionAtIndex:-1],
  NSException, NSRangeException, @"Should have thrown an NSRangeException", nil);

这是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6737494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档