objective-c - 如何在 Xcode 3 中调试单元测试?

标签 objective-c xcode unit-testing debugging macos

我关注了 Apple 的 instructions在我的项目中设置单元测试。我遵循了使它们依赖的说明,因此测试在我的主项目的每个构建中运行。这有效,当我的测试通过时,应用程序运行;当他们不这样做时,我会在失败的单元测试行中收到构建错误。

但是,我希望能够在测试失败时单步执行我的应用程序代码,但无法正确配置 Xcode (3.2.5)。该项目是 Mac 项目,不是 iOS。

我尝试了说明 herehere ,但执行从未在我设置的断点处停止,无论是在单元测试代码中还是在我的应用程序代码中。按照第一组指令操作后,我设置的断点变成了黄色和蓝色轮廓,我也不知道那是什么意思。我需要做什么才能逐步完成测试?

更新

我发现另一个页面试图通过向我的主要可执行文件添加参数和环境变量来解决此问题 ( here ),但同样,这些不会导致执行在我的断点处停止。我还注意到我的测试(大量)日志语句也没有显示在我的调试器控制台中。

我还发现黄色断点表示运行时无法找到那里的代码。这些都在我的测试用例类中,所以这似乎可以解释为什么它们没有触发。

最佳答案

使用 Xcode 3.2 调试我的 OCTest 测试通常没有问题,包括在断点处暂停。

基本思想是告诉 gdb 以您的包作为参数启动 otest。您将通过将 /Developer/Tools/otest 作为自定义可执行文件添加到您的 Xcode 项目,然后将您的 OCTest 包名称作为唯一参数(在项目菜单中选择“编辑事件可执行文件 otest”,并在第二个选项卡的顶部框中添加一行 Foo.octest 以调试 Foo 测试)。

现在,如果您点击调试按钮,它将立即开始调试您的测试包,并将在声明的断点处停止(如果您点击构建和调试,如果测试未通过,它可能不会启动)。另请注意,您可能必须将环境变量设置为 YES 以禁用垃圾收集(在同一“参数”选项卡的底部框中),如果需要,otest 会准确告诉您。

如果您已执行上述所有操作但仍然无法进入测试代码,这可能是因为它在编译时关闭了调试符号生成 - 检查您的调试build设置,但最有可能是因为测试代码未重新编译根本。我说最有可能,因为你的日志没有显示在控制台中,NSLog 应该写在 Xcode 控制台中。手动清理您的构建和 bin 文件夹,有时当您更改路径或名称时,您最终会加载过时的代码。您可能还想检查文件是否没有跳出测试目标(失败的测试是否在同一个非日志文件中?)。

关于objective-c - 如何在 Xcode 3 中调试单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637219/

相关文章:

java - 使用 Java2se html-unit 的 SSL 客户端证书身份验证

ios - 为什么这个 UIViewController 方法调配不起作用?

objective-c - 打开文件对话框

iphone - 处理在应用程序未运行时触发但在应用程序运行时仍显示的通知警报

xcode - 嵌入用户时间轴 - Twitterkit/Swift

android - 如何对 Android 系统应用进行仪器测试

ios - UISearchBar : searchBarSearchButtonClicked delegate is not called

ios - CFBundleVersion 必须是句号分隔的列表

objective-c - 如何使ios 5.1进入xcode模拟器?

unit-testing - Angular 2 测试 - 无法创建组件