ios - OCUnit 测试从命令行失败,但在使用钥匙串(keychain)服务时在 Xcode 中工作

标签 ios unit-testing continuous-integration ocunit sfhfkeychainutils

我正在使用 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/

相关文章:

java - 在单元测试期间加载 WAR 资源

c# - 使用 Jenkins 和 Github 的 ASP.NET MVC5 CI/CD

.net - Azure 与 SQL 迁移的持续集成

ios - Sprite Kit animateWithTextures 滞后

ios - Xcode 编译器标志列表

c# - 为什么最小起订量声称我的模拟的属性 setter 从未被调用,即使代码正在调用它?

unit-testing - Java 项目 : Failed to load ApplicationContext

azure-devops - 有没有办法识别在 Azure Devops CI 构建中 checkin 的 TFS 分支?

ios - WKWebView拦截链接点击

ios - 分发证书自动吊销