【发布时间】:2011-07-31 06:27:54
【问题描述】:
我正在使用 OCUnit 为我的 iPhone 应用程序编写测试。 有什么方法可以调试单元测试并设置断点来查看到底发生了什么?
在不使用断点的情况下编写单元测试非常困难。
【问题讨论】:
-
+1 这对 XCode3 来说是邪恶的,很高兴有人问。
标签: objective-c xcode unit-testing debugging breakpoints
我正在使用 OCUnit 为我的 iPhone 应用程序编写测试。 有什么方法可以调试单元测试并设置断点来查看到底发生了什么?
在不使用断点的情况下编写单元测试非常困难。
【问题讨论】:
标签: objective-c xcode unit-testing debugging breakpoints
使用 XCode 4.2,(通过在设置项目时选中“包含单元测试”复选框设置 SenTestKit 单元测试),产品->测试没有达到我的断点,但产品->执行操作->没有构建的测试似乎可以解决问题。希望这会有所帮助。
【讨论】:
David Gelhar 发布的link 适用于 Xcode 3。
对于 Xcode 4,事情要简单得多。编辑您当前的方案并转到“测试”操作。单击底部的“+”并添加包含您要运行的测试的测试包。现在,当您选择 Product -> Test 时,它将运行这些测试。任何活动的断点都会像您预期的那样被命中。
【讨论】:
这是一篇博文:Debugging Cocoa application unit tests,其中包含如何执行此操作的说明(至少适用于 XCode 3;不确定 XCode 4)。
【讨论】:
在 XCode 4 中要注意的另一项是您尚未将正在测试的类添加到单元测试目标以及主项目中。似乎没有必要,它会破坏你的断点命中能力。
当您运行时,调试日志中的警告消息将是一条线索。消息将如下所示:
“XXX 类在 YYY 和 ZZZ 中都实现了。将使用两者之一。哪个未定义。”
一旦我从单元测试目标中删除了警告中提到的类,Xcode 就开始遇到断点。
您可以通过单击 .M 文件并在“Target Membership”下的检查器窗口中关闭其在单元测试目标中的成员资格来从目标中删除类。
【讨论】: