【问题标题】:Xcode 4, breakpoints not working in unit tests for Mac OS command line toolXcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用
【发布时间】:2012-10-04 12:33:08
【问题描述】:

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

因为我在询问之前做了谷歌搜索,这些是我已经尝试/检查过的一些事情:

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

我还能做些什么来在单元测试中遇到断点?

【问题讨论】:

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


    【解决方案1】:

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

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

    -或-

    如果您尝试调试的测试是失败的测试,则可能是您的 -setUp 方法发生了失败。如果您在 setUp 中使用 OCMock 并且忘记存根在设置期间碰巧调用的方法,则可能会发生这种情况。

    【讨论】:

    • 你的第二个建议对我来说是个问题。谢谢你。
    【解决方案2】:

    我对 ios 应用程序的单元测试也陷入了类似的困境。在不同的位置使用新的代码副本为我解决了这个问题。

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

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 2017-03-28
      • 1970-01-01
      • 2012-09-15
      • 2016-07-14
      相关资源
      最近更新 更多