使用SenTest测试断言

时间:2012-10-05 16:31:08

标签: objective-c unit-testing testing assert

我在方法中有代码,断言()参数属于给定范围。我想使用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来测试方法栏中断言的失败或其他方式:?

2 个答案:

答案 0 :(得分:2)

如果您使用NSAssert(或NSAssert1NSAssert2等)代替assert,则可以使用NSInternalInconsistencyException

答案 1 :(得分:0)

您无法捕获assert,因为它不是obj-c异常。要解决此问题,只需声明您自己的宏MY_ASSERT(condition),如果条件不满足将引发异常并使用它而不是标准assert