为核心数据迁移测试生成旧版本xcdatamodel的数据

Generate Data of Previous Version of xcdatamodel for Core Data Migration Testing

在我们现有的应用程序中,我们有许多不同版本的 xcdatamodel:

+ TheApp.xcdatamodel
   TheApp.1.0.xcdatamodel
   TheApp.1.1.xcdatamodel
   TheApp.2.0.xcdatamodel
   ...

我们知道做数据库迁移测试的传统方式就是这个问题中提出的:How to Test Core Data Migration With an App Already in the App Store?简而言之,它的工作原理如下:

  1. 安装旧版本的应用;
  2. 在旧版应用中创建一些数据;
  3. 在上面安装新版本;
  4. 查看是否所有内容都已正确迁移。

我们一直在为所有以前版本的应用程序使用这种迁移测试方法。我们的QA会执行以上步骤,然后自行判断迁移是否成功。

但是,在最近的升级中,我们的数据模型发生了很大变化。要求 QA 记住在旧版本应用程序中创建的内容并知道在迁移过程中丢失或不丢失的内容听起来不是一个好主意。因此,我们想看看是否可以由开发人员自己编写数据库迁移的单元测试。

所以第一步就是生成测试数据。请注意,我们可以从我们的 Xcode 项目中看到所有以前版本的 xcdatamodel,这似乎是可能的。简而言之,问题:

是否可以从我们当前版本的应用程序中以编程方式生成以前版本 xcdatamodel 的测试数据?

请告诉我您的想法。建议也可以接受。

我们是这样做的:我们需要先为您想要使用的任何模型获取一个 URL,然后从中创建一个 managedObjectModel

let oldModelUrl = NSBundle.mainBundle().URLForResource("CoreDataExample.momd/CoreDataExample",
withExtension: "mom")!
let oldManagedObjectModel = NSManagedObjectModel.init(contentsOfURL: oldModelUrl)

参考:https://medium.com/@yzhong.cs/1d9f941b3168