由于我使用的是Xcode 9,因此所有与钥匙串通信的单元测试都会被破坏.它也发生在Xcode GM上.正如我所追踪的那样,OSStatus
在读写时没有错误,但是从钥匙串读取什么都不会导致使用钥匙串进行所有单元测试失败.当Apple发布带有iOS 10模拟器的Xcode 8时,我已经遇到过类似的问题,其中Keychain无效,Apple在Xcode 8.2中修复了这个问题.iOS 11模拟器是否还有其他人面临此问题?有什么想法吗?
最后我们发现了问题.正如@Gix所说,问题在于我们框架内的单元测试.SDK测试没有应用程序上下文,因此没有/ a keychain可用.但实际上我们并不想像@Gix那样将测试从SDK移到应用程序中.因此,我们可以通过在SDK项目中添加app目标来解决问题,然后将其设置为SDK单元测试的主机.现在单元测试正在通过.但是我仍然不明白为什么它只会在新的Xcode中失败.我们意识到这不是iOS 11模拟器问题,因为Xcode 9中的iOS 10模拟器也会发生同样的故障.因此,此限制是Xcode 9 Simulator应用程序的属性,可以使用我提供的解决方案进行修复.它仍然很混乱,但它可以工作,你不需要将测试从SDK移动到应用程序!