日志记录和断点在 XCTests 中不起作用

Logging and breakpoints not working in XCTests

我有一个很大的 iOS 项目,我的问题是,当 运行 XCTests:

我在同一工作区内还有另一个 iOS 项目,断点和日志记录工作正常。

有问题的 iOS 项目最初是在 Xcode 的旧版本上创建的(大约 2012 年,不确定具体是哪个版本);我在其他地方看到 this comment,有人用旧的 .xcodeproj.

看到了这个问题

该项目本身是混合的Obj-C/Swift,使用多个 Cocoapods,一个 watchkit 扩展,并测试分为三个目标。

鉴于我的项目配置复杂,我宁愿避免重新开始 .xcodeproj 并尝试准确反映我的错误配置。

此故障的原因可能是什么?我可以在现有 .xcodeproj 的配置中更改什么来修复它?

Select 您的方案,转到 编辑方案... 并勾选 调试可执行文件 选项 测试 > 信息 窗格。

调试器将附加到您的测试和目标应用程序,并且将在您的项目的两个部分命中断点。

请注意,当您的目标应用程序遇到断点时,您的测试仍然 运行 并且可能会超时,从而终止两个应用程序。

罪魁祸首是项目文件中的 DEPLOYMENT_POSTPROCESSING = YES

这与您的测试方案的设置方式有关。我遇到了同样的问题,我通过为测试可执行文件打开 Debugging "ON" 来修复我的问题。

我为我的 UI 测试制定了一个新方案,所以我假设调试器在没有命中断点时没有附加到新的 UI 测试方案。然而, 对我有正确的答案。

In my case breakpoint was not hit in just one callback, so I changed "Swift Compiler" "Optimization Level" to "No optimization" in project target build settings for debug, and it started working in Xcode 9.3 as well as AppCode.

对于断点不工作的情况,检查你有哪个优化级别,如果你有新的 -Os 断点开始表现得很奇怪,在调试模式下更改为 -NoneNo Optimization 无论如何你有选择

日志没有出现在调试区域的问题,在我的例子中,是由于 OS_ACTIVITY_MODE 参数在 Scheme -> Test -> Arguments[=11= 中设置为 "disable" ]

我尝试了截至该日期的回复中的所有内容,但最终对我来说唯一有效的方法是删除目标并重新创建它。