2012-10-05 40 views
1

我有方法中的代碼斷言()參數落在一個給定的範圍內。我想用SenTest測試用例來測試非法參數。使用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 

可以使用哪些XXX YYY和測試失敗或者方法欄中的斷言:?

+1

也許我們可以幫助你更容易,如果你向我們展示了你正在嘗試的斷言的例子。 –

回答

2

如果使用NSAssert(或NSAssert1NSAssert2等),而不是assert,你可以捕捉的NSInternalInconsistencyException

+0

太好了。感謝指向NSAssert的指針 –

0

你不能捕獲assert,因爲它不是obj-c異常。要解決這個問題,只需聲明自己的宏MY_ASSERT(condition),如果條件不符合,將會拋出異常並使用它代替標準assert

相關問題