2012-10-05 39 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

相关问题