XCode 4.2 で奇妙な問題が 1 つあります。最近、例外を発生させるSomeClass
with メソッドという名前のクラスを持つプロジェクトに、コード カバレッジ サポートを追加することにしました。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...");
}
ここまでは順調です。テストはパスしました。コード カバレッジをサポートするには、このソースに従って「Instrument Program Flow」と「Generate Test Coverage Files」のビルド設定を有効にする必要があります。しかし、"Instrument Program Flow" をオンにすると、次のエラーでテストが失敗しました:"raised Some reason... (Expected exception:NSException)"
他のすべてのテストは正常に動作します。この動作の理由は何でしょうか?