Первое, что нужно знать, это то, что OCUnit (он же SenTestingKit.framework) интегрирован с XCode, но на самом деле не часть собственно XCode. OCUnit начинался как сторонний код и стал стандартом de facto для модульного тестирования Objective-C, поэтому Apple приняла его и теперь поддерживает.
Более того, вывод, который вы видите, кажется несколько странным. Я использую Xcode 3.2.1, который поставляется со Snow Leopard. Я попробовал следующий тест:
- (void) testNumbers {
int number1 = 2;
int number2 = 3;
STAssertEquals(number1, number2, nil);
STAssertEquals(4, 5, nil);
}
Вот ошибки, которые я вижу в области / окне результатов сборки Xcode:
-[ExampleTest testNumbers] : '2' should be equal to '3'
-[ExampleTest testNumbers] : '4' should be equal to '5'
Когда я дважды щелкаю по ошибке в журнале сборки, XCode сразу переходит к строке ошибочного утверждения.
Макросы OCUnit, конечно, не идеальны, но пример, который вы использовали выше, был невероятно подробным. Макросы требуют либо 2+, либо 3+ аргументов. (STFail
является исключением и требует только 1+ аргументов.) Последний обязательный аргумент всегда является необязательной строкой формата для описания, и любые другие параметры используются для замены в этих заполнителях, как вы это делаете с printf()
или NSLog()
. Если вы передадите nil
, вы получите ошибку по умолчанию без дополнительных подробностей.
Обычно я добавляю описание только тогда, когда тест действительно требует контекста. Например, что на самом деле означают тест и / или субъект (ы) утверждения. Чаще всего я просто включаю эту информацию в качестве комментариев вокруг утверждения. Проще лучше. : -)
Чтобы ответить на ваш последний вопрос, в настоящее время нет способа получить красно-зеленую полосу в XCode, как вы видели бы с JUnit. Это может быть хорошим дополнением, но не то, что я лично считаю критическим. YMMV.