Выполнить несколько государственных деятелей в одном макросе STAssert…? - PullRequest
1 голос
/ 20 декабря 2010

Я хочу выполнить более одного оператора в семействе макросов STAssertXX, это возможно? Что-то вроде:

STAssertTrue([foo doSomething] && [barDoSomethingElse], @"Should…");

Приведенный выше код работает для методов, которые возвращают логические значения, я хотел бы что-то подобное для void типов возврата:

STAssertNoThrow({
    [foo doSomething];
    [bar doSomethingElse];
}, @"Should…");

Конечно, здесь препроцессор жалуется.

Ответы [ 2 ]

1 голос
/ 20 декабря 2010

Так как любой действительный код C также является допустимым Objective-C;вы можете использовать оператор , из C для одного аргумента, если вы используете его в скобках.

Например:

NSAssertNoThrow(([foo doSomething], [bar doSomethingElse]), @"Whatever");

Оператор , позволяет вам составлятьнесколько выражений в виде одного оператора, возвращающего значение последнего выражения.

Я бы настоятельно рекомендовал категорически против , используя это в операторах STAssert…, так как вы потеряете важную информацию о том, какие тесты не прошли.

0 голосов
/ 20 декабря 2010

ОК, это то, что я получил до сих пор:

STAssertNoThrow(^{
    [foo doSomething];
    [bar doSomethingElse];
}(), @"Whatever");

Но, может быть, есть более простое решение?

...