2015-02-23 58 views
3

在我们现有的应用程序,我们有许多不同版本的xcdatamodel生成以前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的测试数据?

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

回答

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