可以防止 XCode 在调用 `XCUIApplication().terminate()` 后调用调试器

Possible to prevent XCode from envoking debugger after calling `XCUIApplication().terminate()`

我正在使用 UITest 测试 objective C 应用程序,使用 swift 进行测试。

XCode 7.3,模拟 9.3

每个测试用例都会调用 XCUIApplication.launch(),它会通过发送 SIGKILL 杀死任何 运行 应用程序。

Xcode 将此视为崩溃 - 在 main.m 上调用调试器。要继续测试套件,我只需单击调试器中的继续按钮。

点击继续后,我的日志显示:

Message from debugger: Terminated due to signal 9

这种情况令人沮丧,因为它发生在我 1/4 的测试用例之后。导致我无法专注于我正在编辑的文档并导致我的测试套件挂起,直到我点击继续。

有办法解决这个问题吗?

我们遇到了同样的问题。经过一些调试后,我们发现这是由于为您的应用启用了 Background Modes 造成的。

我们的解决方案是为开发和测试创建一个新目标,将所有 Background Modes 禁用。

仅供参考,在项目设置的 Capabilities 部分中,它被标记为 Background Modes 将此 Off 设为关键。或者,您可以从 Info.plist

中删除 Require background modes(又名 UIBackgroundModes)键

您可以在使用 xCode 终止后进行调试 and/or 测试。在菜单中:

  1. 调试
  2. 附加到进程
  3. 选择Likely TargetsBy Process Identifier (PID)