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

时间:2015-02-23 15:21:09

标签: ios objective-c unit-testing core-data-migration

在我们现有的应用中,我们有许多不同版本的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. 查看是否所有内容都已正确迁移。
  5. 我们一直在为我们之前版本的应用程序使用此迁移测试方法。我们的QAs将执行上述步骤,然后自行判断迁移是否成功。

    但是,在最近的升级中,我们的数据模型发生了很大变化。要求质量保证人员记住在旧版本的应用程序中创建的内容,并了解迁移过程中丢失或未丢失的内容,这听起来不是一个好主意。因此,我们希望看看开发人员是否有可能为数据库迁移编写单元测试。

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

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

    请让我知道你的想法。建议也是可以接受的。

1 个答案:

答案 0 :(得分:0)

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

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

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