我想在STAssertXX
系列宏中执行多个语句,这可能吗?类似的东西:
STAssertTrue([foo doSomething] && [barDoSomethingElse], @"Should…");
上面的代码适用于返回布尔值的方法,我想要类似void
返回类型:
STAssertNoThrow({
[foo doSomething];
[bar doSomethingElse];
}, @"Should…");
当然,预处理器在这里抱怨。
答案 0 :(得分:1)
由于任何有效的C代码也是有效的Objective-C;只要在括号中使用它,就可以使用C中的,
运算符作为单个参数。
像这样:
NSAssertNoThrow(([foo doSomething], [bar doSomethingElse]), @"Whatever");
,
运算符允许您将多个表达式组合为单个语句,返回最后一个表达式的值。
我会在STAssert…
语句中使用强烈反对,因为您将丢失有关哪些测试失败的重要信息。
答案 1 :(得分:0)
好的,这是我到目前为止所得到的:
STAssertNoThrow(^{
[foo doSomething];
[bar doSomethingElse];
}(), @"Whatever");
但也许有一个更简单的解决方案?