Использование SenTest для проверки утверждения

У меня есть код в методе, который утверждает(), что параметр попадает в заданный диапазон. Я хотел бы протестировать недопустимые параметры с помощью тестового примера SenTest.

Мое первое предположение заключалось в том, что я должен использовать STAssertThrows( ... ), однако это сообщает, что исключение не выдается при сбое утверждения. Могу ли я поймать сбой assert() с помощью макроса STAssert...?

[обновлено для примера]

В классе 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 я могу использовать для проверки ошибки или иного утверждения в панели методов: ?


person Dave Durbin    schedule 05.10.2012    source источник
comment
Возможно, мы могли бы помочь вам легче, если бы вы показали нам пример утверждения, которое вы пытаетесь сделать.   -  person Sandro Meier    schedule 05.10.2012


Ответы (2)


Если вы используете NSAssert (или NSAssert1, NSAssert2 и т. д.) вместо assert, вы можете поймать NSInternalInconsistencyException.

person titaniumdecoy    schedule 05.10.2012

Вы не можете поймать assert, потому что это не исключение obj-c. Чтобы это исправить, просто объявите свой собственный макрос MY_ASSERT(condition), который будет генерировать исключение, если условие не будет выполнено, и используйте его вместо стандартного assert.

person Sulthan    schedule 05.10.2012