我在 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/