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

时间:2016-10-15 21:27:10

标签: swift unit-testing cocoa code-signing xcode8

我最近更新到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

编辑 :当运行单元测试时,代码签名都会在第二次运行时失败。基本上我必须在每次测试运行之前清理构建。

4 个答案:

答案 0 :(得分:1)

对我有用的是转到测试目标并打开“自动管理签名”。我的应用程序已经打开了自动签名功能,所以我认为当未为测试目标打开自动签名功能时,Xcode中也会出现一些问题。

enter image description here

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

根据上面的评论,我想在这里分享其他解决方案,该解决方案似乎主要影响具有以下症状的Mac OS应用程序项目(非iOS):测试目标的代码签名失败,当应用程序目标代码签名正常时,同时为两者启用了自动代码签名。

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

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

  1. 确保所有具有UI依赖关系的类(NSViewController等)在非UI测试目标中均未编译
  2. 在测试目标设置“构建阶段”->“依赖关系”中,从测试目标的依赖关系中删除应用程序目标。

这两个步骤使我能够再次运行非UI单元测试,而不会在Xcode 11中出现代码签名错误。

答案 3 :(得分:0)

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

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