我正在使用 SFHFKeychainUtils 在我的应用程序中使用钥匙串(keychain)服务。我已经编写了一些 OCUnit 测试来验证这段代码的功能。当我在 iOS 模拟器或我的设备上从 Xcode 运行单元测试时,一切正常。但是现在我正在尝试设置一个 CI 服务器,当它通过命令行运行时测试失败,错误代码为 -25291。在 Apple 的文档中查找它告诉我:没有可用的信任结果 (errSecNotAvailable)。我已将 Security.framework 链接到我的单元测试项目,从我在网上阅读的内容来看,这似乎是我需要的一切才能使它正常工作。这是我在控制台中调用的命令:
/usr/bin/xcodebuild -target [Test_Target] -sdk/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/-configuration 调试
对于让单元测试和钥匙串(keychain)服务从命令行很好地协同工作,有没有人有任何经验或建议?
最佳答案
我遇到了同样的问题,我的解决方案是在开始任何测试之前确保模拟器正在运行。我在 Xcode 的运行脚本构建阶段使用 AppleScript 做到了这一点,在 CI 服务器上基本上是一样的。这是将打开模拟器的 shell 脚本:
exec osascript <<EOF
tell application "iOS Simulator"
activate
end tell
导致此问题的安全/钥匙串(keychain)服务问题显然是一个已知问题,但我还没有跟踪它的雷达。如果您使用的是 Jenkins,请将上述脚本放在 Xcode 构建阶段之前的 Execute Shell 阶段。如果您通过 Xcode 本身控制它,请将其置于 RunUnitTests 运行脚本构建阶段之前的运行脚本构建阶段。 希望这能解决您的问题!
关于ios - OCUnit 测试从命令行失败,但在使用钥匙串(keychain)服务时在 Xcode 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996578/