在测试中运行 CloudKit 代码?

Posted

技术标签:

【中文标题】在测试中运行 CloudKit 代码?【英文标题】:Running CloudKit code in tests? 【发布时间】:2014-06-11 08:14:41 【问题描述】:

我想使用 XCTest 框架为我的 CloudKit 代码编写自动化测试。测试用例运行,得到一个有效的容器对象,得到一个有效的公共数据库对象,但是当我尝试做任何真实的事情时,它会因异常而死:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
    reason: 'Failed to establish valid container/bundleID information'

到目前为止我所尝试的:

我检查了 Info.plist 的测试目标,其中的捆绑包 ID 对应于容器 ID。 我已调整 [[NSBundle mainBundle] bundleIdentifier] 以确保它返回正确的捆绑包 ID。 我已经从我的主应用的目标复制了 iCloud 权利。

但我仍然得到异常。有没有办法让 CloudKit 代码在测试中运行?

【问题讨论】:

我的配置不正确时出现此错误。检查身份下的项目设置页面上,团队旁边没有列出任何错误,并且在功能下,iCloud 切换为 ON,检查了 Cloudkit 服务并且没有无效的标记步骤。修复后,我的测试运行正常。 【参考方案1】:

重点是将测试作为“应用程序测试”运行。我测试了一个自定义框架,所以没有运行测试套件的应用程序,没有权利,因此没有 CloudKit。我必须添加一个简单的“Test Rig”目标(一个空的 Cocoa 应用程序),在那里设置权利,并将这个测试设备设置为 Bundle Loader 和测试套件的测试主机。然后测试可以很好地使用 CloudKit。谢谢你让我走上正轨,@Ward!

【讨论】:

以上是关于在测试中运行 CloudKit 代码?的主要内容,如果未能解决你的问题,请参考以下文章

运行 CloudKitAtlas 失败(Cloudkit 测试)

CloudKit 分离开发​​者 ID 和测试 ID

CloudKit 订阅不能在代码中创建吗?

在开发中测试 CloudKit 中的 CKErrorUserDeletedZone

CloudKit 不发送更新通知

CloudKit App 处理不同的 iCloud 帐户