运行 单元测试后代码签名失败

Code signing is failing after running unit tests

我最近更新到 Xcode 8 并将我的代码转换为 Swift 3。现在我的单元测试失败了,可能是他们应该的,但是当尝试 运行 再次.

我使用了多个 CocoaPods,但它们以前都可以使用。在 UnitTesting 之外一切正常。

到目前为止我找到的唯一修复方法是清除 CMD+ALT+K并重建解决方案。

有人对此有永久性修复吗?

错误

/Users/***/Library/Developer/Xcode/DerivedData/***-bbpdbvqjecpwzvfliyyqcnarjvua/Build/Products/Pro Debug/***.app: replacing existing signature
/Users/***/Library/Developer/Xcode/DerivedData/***-bbpdbvqjecpwzvfliyyqcnarjvua/Build/Products/Pro Debug/***.app: code object is not signed at all
In subcomponent: /Users/***/Library/Developer/Xcode/DerivedData/***-bbpdbvqjecpwzvfliyyqcnarjvua/Build/Products/Pro Debug/***.app/Contents/PlugIns/***Tests.xctest
Command /usr/bin/codesign failed with exit code 1

编辑:当运行宁单元测试都成功时,代码签名在第二个运行.基本上我必须在每次测试前清理构建 运行.

我的解决方案是转到工作区中的 Pods 项目,然后在 pod 目标上打开代码签名。

这要么打开了 Swift 3 迁移中缺少的一些设置,要么这是实际的解决方案。

对我有用的是转到测试目标并打开 "Automatically manage signing." 我的应用程序已经打开了自动签名,所以我认为自动签名时 Xcode 有问题也没有为测试目标打开。

我想在这里分享另一个解决方案,根据我上面的评论,这似乎主要影响具有相同症状的 Mac OS 应用程序项目(不是 iOS):测试目标的代码设计失败,当应用程序目标代码设计良好,并为两者启用自动代码设计时。

None 其他解决方案有效 - 我的问题似乎根本不涉及代码设计配置。以某种方式在非 UI 测试目标中包含 UI 类 并依赖于应用程序目标会触发代码签名失败。

这种情况下的解决方法是:

  1. 确保所有具有 UI 依赖项(NSViewController 等)的 类 在非 UI 测试中 编译目标
  2. 在测试目标设置 Build Phases->Dependencies 中,从测试目标的依赖项中删除 app 目标。

这两个步骤使我能够再次 运行 非 UI 单元测试 Xcode 11.

中没有代码签名错误

我认为在 .xcodeproj 中保持一致是正确的答案。对于我的项目,这是一个 macOS 项目,在 Xcode 12 上编译 10.15+,当我创建一个新的测试目标时,它检查了 Automatically Manage Signing,即使我的其他方案没有被检查,我正在处理都是手动的。

所以我取消选中 Automatically Manage Signing,然后在测试目标的 Build Settings -> Code Signing Identity 下,从下拉列表中选择 select Other。然后确保删除此 - 虚线。从那里它成功地为我建造了。