我在方法中有代码,断言()参数属于给定范围。我想使用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来测试方法栏中断言的失败或其他方式:?
答案 0 :(得分:2)
如果您使用NSAssert
(或NSAssert1
,NSAssert2
等)代替assert
,则可以使用NSInternalInconsistencyException
。
答案 1 :(得分:0)
您无法捕获assert
,因为它不是obj-c异常。要解决此问题,只需声明您自己的宏MY_ASSERT(condition)
,如果条件不满足将引发异常并使用它而不是标准assert
。