【问题标题】:Xcode 9 - Could not attach to pid for Frameworks unit testsXcode 9 - 无法附加到 pid 以进行框架单元测试
【发布时间】:2018-09-19 02:41:48
【问题描述】:

使用时间机器从一台 mac 迁移到另一台后,我收到以下错误。

无法附加到 pid

确保“项目标题”尚未运行, 并且“系统用户名”有调试权限。

该错误仅在为(任何)框架项目运行单元测试时发生。在模拟器和设备上运行应用程序可以正常工作。

为应用程序运行单元测试有效,但由于此错误,无法为任何框架运行它。即使使用 Alamofire 或 PromiseKit 单元测试,我也会收到此错误。

我在 Stackoverflow 上测试了针对类似问题提出的解决方案(我删除了派生数据,清理了所有内容,重新安装了 Xcode,重新启动了 mac ..)直到现在还没有解决问题。

我正在使用 Xcode 9.3 并使用 Xcode 9.4-beta 进行了测试。

我在 Mac OS High Sierra - 10.13.4 (17E199) 上运行

欢迎任何帮助/建议!

【问题讨论】:

  • 从 git 签出项目时会出现这种情况吗?
  • @Ryan 是的,即使我从 GitHub 上查看 alamofire,也会发生这种情况
  • 如何将 3rd 方框架导入到您的项目中?通过cocoapods?
  • 我说的是为框架运行单元测试,我提到了 Alamofire 和 PromiseKit 作为例子。这些框架没有依赖关系,所以这里不需要cocoapods。同样正如我在问题中所说,使用框架运行应用程序以及为使用框架的应用程序运行单元测试都可以正常工作。只有在打开框架项目并尝试运行其单元测试时才会出现问题
  • 单元测试目标与主目标或第三方库目标不同。所以你需要通过项目设置或Podfile(如果你使用的是cocoapods)来导入它们。我问的问题是要澄清你是如何将框架导入到你的测试目标中的。

标签: ios xcode unit-testing frameworks ios-simulator


【解决方案1】:

在向 Apple 提交错误报告后,他们建议我:

  • 检查我的用户是否是管理员用户。就是这样。
  • groups 命令的输出中检查我是否有“_developer”组。就是这样。使用这个命令:dscacheutil -q group
  • 使用命令sudo /usr/sbin/DevToolsSecurity -status检查开发者模式权限。我的状态未知。
  • 如果需要,使用命令sudo /usr/sbin/DevToolsSecurity -enable 启用开发者模式权限。这终于解决了我的问题!

【讨论】:

  • 检查开发者模式权限的命令是sudo /usr/sbin/DevToolsSecurity -status - 注意开头的/
  • 不幸的是,这对我不起作用。检查状态时得到Developer mode is currently enabled.,运行这些命令时得到Developer mode is already enabled.
  • @OrionEdwards 你最终找出原因和解决方案了吗?
  • @hyouuu 是的,我发现如果我重新启动我的 mac,问题就消失了。愚蠢但有效
  • 非常感谢 - 这只是为我解决了 Xcode 11 Beta 4 的问题!
【解决方案2】:

如果您有Mojave 操作系统,那么:

1) 打开你的目标方案

2) 取消选中此项

3) 测试此目标时选择此方案(例如测试“TestApiTarget” - 在测试方案中选择“TestApiTarget”)。

来自bug report的临时解决方案

【讨论】:

    【解决方案3】:

    我能够通过以下方式解决此问题:

    1. 添加Single View App目标(我将其命名为HostApp
    2. HostApp 目标设置为测试目标的宿主应用程序

    【讨论】:

    • 这个解决方案对我有用。我正在运行 High Sierra Beta 8、Xcode 9.4.1 和 Xcode 10 Beta 6。
    • 这对我也有用。但我不确定它是否是干净的解决方案。无论如何,谢谢。
    • 找到另一个解决方案。检查我的答案
    【解决方案4】:

    您可以尝试以下一些步骤-

    1. 打开keyChain并检查Keychain certificates并删除现有过期的。
      1. 从 Xcode 项目设置中取消选中 -automatically manage sign in
      2. 删除所有派生数据
      3. cmd+k清理项目
      4. 然后关闭并Restart 项目并运行...

    我希望它会起作用。

    【讨论】:

    • 感谢您的回复。我的钥匙串上没有过期的证书。
    【解决方案5】:

    您可以按照以下步骤执行此操作 -

    1. 杀死你的模拟器,然后从 Xcode 再次运行它。

    2. 如果您在构建开始后尝试构建速度过快。尝试 再次停止并运行项目。

    3. 这可能是密钥链访问中的不受信任证书的问题,请删除此类证书并重新构建。

    最后,您可以重新检查 Keychain 证书。通过右键单击删除现有的(它们已过期) 并且在Targets->General 中未选中"automatically manage signing"

    希望以上步骤能解决您的问题。

    【讨论】:

    • 感谢您的回复。我尝试了您建议的解决方案,但没有奏效。
    【解决方案6】:

    还没有看到这个确切的错误,但我发现删除派生数据有助于修复一些在更新等后弹出的临时错误。

    您可以在 Xcode 中找到派生数据文件夹的位置。
    打开首选项/位置并点击箭头。
    进入派生数据后,您可以删除所有文件夹。 仅供参考,删除派生数据文件夹后,您的所有项目都需要重建。

    希望这会有所帮助!

    【讨论】:

    • 感谢您的回复,我已经多次删除派生数据,没有任何结果。
    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多