Xcode 4,Mac OS命令行工具单元测试中断点无法正常工作

3
我在Xcode 4.5中有一个简单的Mac OS X命令行工具项目。我手动从Cocoa Unit Testing Bundle模板添加了一个单元测试目标(命令行工具模板没有Include Unit Tests开关)。问题是:当运行测试(Product>Test)时,我无法让调试器停在断点上。
在提问之前,我进行了谷歌搜索,已经尝试/检查了以下内容:
- 单元测试确实运行(例如STFail()会正确失败)。 - 顶部栏上的主要断点开关处于打开状态(关闭和重新打开都没有帮助)。 - 测试目标的构建配置设置为Debug(调试器为LLDB,更改为GDB也没有帮助)。 - 调试总体上是有效的。在主控制台应用程序目标中,断点很好地被触发,因此只是单元测试存在问题。此外,我制作了一个包含单元测试的测试iOS应用程序 - 应用程序和单元测试都可以正常断点。 - 构建设置看起来很好(如果有其他设置需要检查,请告诉我): - 生成调试符号=是 - 优化级别=无[-O0](对于Debug) - 设置符号断点(在-[NSException raise]或objc_exception_throw上)没有帮助。 - 重新加载项目或重启Xcode没有帮助。
还有什么可以做到在单元测试中触发断点?
2个回答

2

请检查您的单元测试目标下的“构建后测试”构建设置。

如果此设置设置为“是”,则在构建目标后,通过外部shell脚本执行测试,在再次通过Xcode执行之前。因此,如果脚本执行时测试失败,则不会进行第二次执行(在Xcode内),因此断点将无法被触发。

或者

如果您要调试的测试是一个失败的测试,那么这可能是因为您的-setUp方法中出现了问题。如果在setUp中使用OCMock并且忘记存根在设置期间调用的方法,则可能会发生这种情况。


你的第二个建议解决了我的问题。谢谢。 - jaker

0

我在开发iOS应用时遇到了类似的问题,针对单元测试。使用代码的新副本,并将其放置在不同的位置解决了这个问题。

更新:问题似乎出现在项目/工作空间中的xcuserdata目录中。清除该目录可以解决再次遇到此问题时的困扰。但请注意,您将失去所有先前状态(例如,设置的断点、打开的窗口等)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接