Xcode 9 - 无法附加到框架单元测试的pid

15

使用Time Machine迁移后,运行单元测试时出现以下错误:

无法附加到pid

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

已添加屏幕截图。

仅在运行任何框架项目的单元测试时出现此错误。在模拟器和设备上运行应用程序正常。

针对应用程序运行单元测试可行,但对于任何框架运行单元测试都无法启动,因为出现此错误。即使是使用Alamofire或PromiseKit编写的单元测试也会出现此错误。

我尝试了类似问题的解决方案(删除派生数据、清理所有内容、重新安装Xcode、重新启动Mac等),但目前没有解决这个问题。

我使用的是Xcode 9.3,还测试了Xcode 9.4-beta。

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

欢迎任何帮助/建议!


@Ryan 是的,即使我从GitHub检出alamofire,这种情况也会发生。 - AmineG
你如何将第三方框架导入到你的项目中?通过 cocoapods 吗? - Ryan
单元测试目标与主目标或第三方库目标不同。因此,您需要通过项目设置或Podfile(如果您正在使用cocoapods)导入它们。我提出的问题是为了澄清您如何将框架导入到测试目标中。 - Ryan
所以你正在尝试创建一个依赖于AlamofirePromiseKit的框架?并且想要为你创建的框架添加一些单元测试?或者你实际上是在分叉Alamofire并添加一些测试? - Ryan
请检查此链接是否有效 https://dev59.com/-lcP5IYBdhLWcg3wRX9h#57848546 - Jayprakash Dubey
显示剩余5条评论
6个回答

12

在向苹果提交错误报告后,他们建议我执行以下操作:

  • 检查我的用户是否是管理员用户。情况是这样的。
  • 检查我在groups命令的输出中是否有"_developer"组。确实有。使用此命令:dscacheutil -q group
  • 使用命令sudo /usr/sbin/DevToolsSecurity -status检查开发人员模式权限。对我来说状态是未知的。
  • 如果需要,请使用命令sudo /usr/sbin/DevToolsSecurity -enable启用开发人员模式权限。这最终解决了我的问题!

检查开发者模式权限的命令是 sudo /usr/sbin/DevToolsSecurity -status - 注意开头的 / - Michael
5
很遗憾,这对我没用。当我检查状态时,会显示“当前已启用开发人员模式”,当我运行这些命令时,会显示“开发人员模式已启用”。 - Orion Edwards
@OrionEdwards,你最终找出原因并解决了吗? - hyouuu
@hyouuu 是的,我发现如果重新启动我的 Mac,问题就解决了。很蠢但是有效。 - Orion Edwards
非常感谢 - 这个修复程序让我在 Xcode 11 Beta 4 上解决了问题! - Mo Moosa
我花了两天时间才找到这个。Xcode 11 Beta 4也是如此。我爱你。嫁给我吧。 - backslash-f

9
如果您使用的是Mojave操作系统,则:
1)打开您的目标方案。

enter image description here

2) 取消选中此项

enter image description here

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

这是从错误报告中得出的临时解决方案。


4
我通过以下方式解决了这个问题:
  1. 添加一个名为HostAppSingle View App目标。
  2. HostApp目标设置为测试目标的主机应用程序。

将HostApp设置为主机应用程序


这个解决方案对我有效。我正在运行High Sierra Beta 8,Xcode 9.4.1和Xcode 10 Beta 6。 - Michael
这对我也起作用了。但我不确定它是否是一个干净的解决方案。无论如何,谢谢。 - Vlad Pulichev
找到了另一个解决方案。请查看我的答案。 - Vlad Pulichev

0

您可以尝试以下步骤 -

  1. 打开钥匙串并检查已过期的 Keychain证书,然后删除它们。
    1. 从Xcode项目设置中取消选中 - 自动管理登录
    2. 删除任何派生数据
    3. 通过 cmd+k 清理项目
    4. 然后关闭和 重新启动 项目并运行...

希望这能解决问题。


感谢您的回复。我的钥匙串上没有过期的证书。 - AmineG

-1

虽然我还没遇到过这个具体的错误,但我发现删除派生数据有助于解决一些在更新后出现的临时性错误。

你可以在Xcode中找到派生数据文件夹的位置。
打开首选项/路径并点击箭头。
进入派生数据文件夹后,你可以删除所有的文件夹。 需要注意的是,删除派生数据文件夹后,你所有的项目都需要重新构建。

希望对你有帮助!

Xcode preferences/locations


1
感谢您的回复,我已经多次删除派生数据,但没有任何结果。 - AmineG

-1

您可以按照以下步骤操作 -

  1. 关闭模拟器,然后从Xcode重新运行它。

  2. 如果您在构建开始后尝试过快地构建,请尝试停止并重新运行项目。

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

最后,您可以重新检查Keychain证书。右键单击现有证书(已过期),并在Targets->General中取消选中"自动管理签名"

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


感谢您的回复。我尝试了您建议的解决方案,但它没有起作用。 - AmineG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接