STAssertThrowsSpecificNamed和XCode 4.2中的代码覆盖率

时间:2012-05-12 00:00:08

标签: objective-c xcode unit-testing exception-handling

我对XCode 4.2有一个奇怪的问题。最近我决定为我的项目添加代码覆盖率支持,该项目有一个名为SomeClass的类,方法someMethod会引发异常:

@interface SomeClass : NSObject

- (void)someMethod;

@end


@implementation SomeClass

- (void)someMethod {  
  [NSException raise:NSInternalInconsistencyException format:@"Some reason..."];
}

@end

该类由位于测试项目中的SomeClassTests进行测试,该项目具有以下方法:

- (void)testSomeMethod {
   SomeClass *sClass = [[SomeClass alloc] init];

   STAssertThrowsSpecificNamed([sClass someMethod], NSException, NSInternalInconsistencyException, @"Some description...");
}

到目前为止一切顺利 - 测试通过了。为了支持代码覆盖,我必须根据this source启用“仪器程序流程”和“生成测试覆盖率文件”构建设置。但是当我打开时 “仪器程序流程”测试失败,出现以下错误:"raised Some reason... (Expected exception:NSException)" 所有其他测试都运行良好。这种行为可能是什么原因?

1 个答案:

答案 0 :(得分:0)

我只是通过升级到最新的xcode来解决这个问题。