Xcode 4.2に奇妙な問題が1つあります。最近、私は例外を発生させる方法someMethod
でSomeClass
という名前のクラスを持っている私のプロジェクトにコードカバレッジのサポートを追加することにしました:STAssertThrowsSpecificNodeとXCode 4.2のコードカバレッジ
@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"と "Test Coverage Filesの生成"を有効にして、this sourceに従ってビルド設定を行う必要があります。しかし、私がオンにしたときに、 "Instrument Program Flow"は次のエラーで失敗しました:"raised Some reason... (Expected exception:NSException)"
他のすべてのテストはうまくいきます。この行動の理由は何でしょうか?
いいえ、私はしていません。残念ながら、私は例外の正確な型をチェックしないように強制されました... –
私はGHAssertThrows()を使用していますが、例外の型をチェックしません..しかし、それはまだcatchする代わりに例外を渡します=( –
Stack Overflowへようこそ。これは答えではありません。コメントとして再投稿してください。 –