Xcode 4,断点不适用于Mac OS命令行工具的单元测试

时间:2012-10-04 12:33:09

标签: xcode macos unit-testing command-line breakpoints

我在Xcode 4.5中有一个简单的 Mac OS X 命令行工具项目。我手动从 Cocoa Unit Testing Bundle 模板中添加了一个单元测试目标(命令行工具模板没有包含单元测试开关)。问题:运行测试时,我无法让调试器在断点处停止(Product> Test)。

当我在询问之前进行谷歌搜索时,这些是我已经尝试/检查的一些内容:

  • 单元测试确实运行(它们正确失败,例如STFail())。
  • 顶部栏上的主断点开关已打开(关闭然后再打开没有帮助)。
  • 构建配置在测试目标上设置为 Debug (调试器为LLDB,更改为GDB无效)。
  • 一般调试工作。在主控制台应用程序目标断点被击中就好了所以它只是有问题的单元测试。此外,我制作了一个包含单元测试的测试iOS应用程序 - 应用程序和单元测试都很好。
  • 构建设置看起来很好(让我知道是否还有其他我应该检查):
    • 生成调试符号=是
    • 优化级别=无[-O0](用于调试)
  • 设置符号断点(on - [NSException raise]或objc_exception_throw)无济于事。
  • 重新加载项目或重新启动Xcode无济于事。

在单元测试中,我还能做些什么来打破断点?

2 个答案:

答案 0 :(得分:1)

检查单元测试目标的“构建后测试”构建设置(在“单元测试”下)。

如果此设置设置为“Yes”,则在构建目标之后,测试将通过Xcode“外部”的shell脚本执行,然后通过Xcode执行(再次)。因此,如果您的测试在执行脚本时失败,那么第二次执行(“内部”Xcode)将不会发生,因此您的断点不会被命中。

-OR -

如果您尝试调试的测试是测试失败,则可能是-setUp方法中发生了故障。如果您在setUp中使用OCMock并且忘记了在安装过程中碰巧调用的方法,则可能会发生这种情况。

答案 1 :(得分:0)

我在ios应用程序的单元测试中遇到了类似的漏洞。在不同的位置使用代码的新副本为我修复了这个问题。

更新:有问题的状态似乎位于项目/工作区内的xcuserdata目录中。当我再次碰到它时,清除这个问题解决了这个问题。但请注意,您将丢失所有先前的状态(例如,设置断点,打开窗口等)