Objective c GHAssertThrowsSpecific找不到类型NSRangeException

Objective c GHAssertThrowsSpecific找不到类型NSRangeException,objective-c,unit-testing,xcode4,gh-unit,Objective C,Unit Testing,Xcode4,Gh Unit,我第一次使用Xcode 4和GHUnit编写了一些单元测试。所有建议似乎都建议使用GHUnit,而不是OCUnit 我有一个名为“myList”的自定义集合对象,并在索引:-1处传递一条消息以获取所选内容。因此,它会正确抛出NSRangeException(从底层可变数组) 我正努力用一个Ghasserthrows特定的断言来抓住这一点 下面这行代码不会编译为“未知类型名称”NSRangeException GHAssertThrowsSpecific(s = [myList selection

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

我有一个名为“myList”的自定义集合对象,并在
索引:-1处传递一条消息以获取所选内容。因此,它会正确抛出NSRangeException(从底层可变数组)

我正努力用一个Ghasserthrows特定的断言来抓住这一点

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

GHAssertThrowsSpecific(s = [myList selectionAtIndex:-1],
            NSRangeException, @"Should have thrown an NSRangeException", nil);
我正在导入“Foundation/NSException.h”
,其中似乎定义了NSRangeException。如果我将其更改为:

GHAssertThrowsSpecific(s = [myList selectionAtIndex:-1],
            NSException, @"Should have thrown an NSException", nil);
然后编译良好,断言工作正常,因此这与NSRangeException有关

如果我查看标题,NSRangeException似乎被定义为
NSString*const
,在这种情况下,我如何尝试断言希望捕获它


很明显,我很笨,因为我看不出我做错了什么。

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

NSRangeException实际上只是一个指向字符串的指针,其中包含“NSRangeException”

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

GHAssertThrowsSpecificNamed(s = [myList selectionAtIndex:-1],
  NSException, NSRangeException, @"Should have thrown an NSRangeException", nil);
这很有效