1

パラメータが特定の範囲内にあることを asserts( ) するメソッドのコードがあります。SenTest テスト ケースを使用して不正なパラメーターをテストしたいと考えています。

私の最初の仮定は、STAssertThrows( ... ) を使用する必要があるというものでしたが、アサートが失敗しても例外はスローされないと報告されています。STAssert... マクロで assert() の失敗をキャッチできますか?

[例を提供するために更新]

クラスFoo.mで

@interface Foo : NSObject {
    NSUInteger count;
    NSUInteger max;
}
@end

@implementation Foo
-(void) bar:(char) c {
    assert( count < max );
    ...
}
@end

クラス TestFoo.m 内

@interface TestFoo : SenTestCase {
    Foo testFoo_;
}
@end

@implementation TestFoo
    -(void) testBar {
        STAssertXXX( YYY );
    }
@end

メソッド bar: のアサーションの失敗またはその他をテストするために、どの XXX と YYY を使用できますか?

4

2 に答える 2

2

NSAssertの代わりに(or NSAssert1NSAssert2など)を使用するとassert、 をキャッチできますNSInternalInconsistencyException

于 2012-10-05T18:08:44.970 に答える
0

assertobj-c の例外ではないため、キャッチできません。これを修正するにMY_ASSERT(condition)は、条件が満たされない場合に例外をスローする独自のマクロを宣言し、 standard の代わりに使用しますassert

于 2012-10-05T18:07:29.713 に答える