2015-02-23 46 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