gpt4 book ai didi

objective-c - OCUnit 中的简化断言

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:02 26 4
gpt4 key购买 nike

我刚开始使用 OCUnit,发现断言有点麻烦。在 JUnit 中,我可以编写一个测试来比较如下所示的数字。这个测试显然会失败,但这显示了我可以为两个数字编写的漂亮、简单的断言和我得到的反馈:“预期 <2> 但是 <3>”,代码很少。

alt text

到目前为止我在 XCode 中尝试的是:

alt text

它可以工作,但不如 JUnit 优雅。你知道它是否存在断言宏 alà JUnit for XCode (OCUnit)?另外,是否可以在 XCode 中获取红色/绿色条?

最佳答案

首先要注意的是 OCUnit(又名 SenTestingKit.framework)与 Xcode 集成,但实际上并不是 Xcode 的部分。 OCUnit 从第三方代码开始,成为 Objective-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 构建结果 Pane /窗口中看到的错误:

-[ExampleTest testNumbers] : '2' should be equal to '3'
-[ExampleTest testNumbers] : '4' should be equal to '5'

当我双击构建日志中的错误时,Xcode 直接跳转到失败断言的行。

OCUnit 宏当然不完美,但您在上面使用的示例非常冗长。宏需要 2+ 或 3+ 个参数。 (STFail 是异常(exception),只需要 1+ 个参数。)最后一个必需的参数始终是用于描述的可选格式字符串,任何其他参数都用于替换这些占位符,就像您一样将使用 printf()NSLog()。如果您传递 nil,您只会得到默认错误,而没有额外的细节。

我通常只在测试确实需要上下文时才添加描述。例如,测试和/或断言的主题的实际含义。通常情况下,我只是将这些信息作为断言的注释包含在内。越简单越好。 :-)

要回答你的最后一个问题,目前没有办法像你在 JUnit 中看到的那样在 Xcode 中获得红色/绿色条。这可能是一个不错的补充,但我个人认为这不是关键。 YMMV.

关于objective-c - OCUnit 中的简化断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com