Xcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用

标签 xcode macos unit-testing command-line breakpoints

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

我在询问之前进行了谷歌搜索,这些是我已经尝试/检查过的一些东西:

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

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

最佳答案

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

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

-或-

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

关于Xcode 4,断点在 Mac OS 命令行工具的单元测试中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727385/

相关文章:

ios - Xcode 所有的 segues 显示都一样

iphone - 如何制作 SystemSoundID 数组

android - 我如何修复 ionic mac android 模拟器错误中的 "emulator: Failed to sync vcpu reg"错误

macos - SwiftUI - MacOS - 警报中的文本字段未获得焦点

unit-testing - 如何为AnyLogic代理代码配置单元测试?

javascript - 如何使用 John Papa 风格、Karma 和 Jasmine 数据服务测试 Angular 应用程序?

ios - 从设备上的用户测试中获取数据到mac

objective-c - 为什么标签栏在导航中隐藏?

macos - 如何使用新的 lambda 功能在 OS X Mountain Lion 上安装 JDK 8

python - python (2.7) unittest 的测试描述如何修改