首先要注意的是 OCUnit(又名 SenTestingKit.framework)与 Xcode 集成,但并不是真正的集成partXcode 本身。 OCUnit 最初是作为第三方代码,后来成为de factoObjective-C 单元测试的标准,因此 Apple 采用了它并且现在维护它。
更重要的是,您看到的输出似乎有些奇怪。我正在使用 Snow Leopard 附带的 Xcode 3.2.1。我尝试了以下测试:
- (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()
or NSLog()
。如果你通过了nil
,您只会得到默认错误,而没有额外的详细信息。
我通常只在测试确实需要上下文时添加描述。例如,测试和/或断言的主题的实际含义是什么。通常,我只是将此信息作为断言周围的注释包含在内。越简单越好。 :-)
为了回答你的最后一个问题,目前没有办法像你在 JUnit 中看到的那样在 Xcode 中获得红色/绿色条。这可能是一个很好的补充,但我个人认为并不是至关重要的。 YMMV。