2012-10-18 136 views
0

ers,iOS GHUnit和核心數據

我最近將CoreData集成到了我現有的iOS應用程序中。我之前已經有一些圍繞某些域和網絡功能編寫的測試;現在需要改裝以使用CoreData(而不是存儲在userDefaults中)。

我有GHUnitIOS.framework包括在我的項目中。但是,我的所有測試都失敗了,因爲TestAppDelegate對CoreData的managedObjectContext一無所知。僅供參考,以我所看到的:

[GHUnitIOSAppDelegate managedObjectContext]: unrecognized selector sent to instance

這是有道理的 - 測試程序委託不具有managedObjectContext作爲屬性。我很想添加它,但由於我只能在使用框架時訪問頭文件,因此我無法根據需要對其進行修改。我可以下載GHUnit源代碼並修改實現文件,但如果還有其他選擇,我寧願不這樣做。

他人怎麼解決這個問題? IE,我該如何修復我的測試以支持使用GHUnit的CoreData?

非常感謝。

+0

如果我在我的主AppDelegate中創建了一個封裝了CoreData屬性/方法的對象,是否允許我測試/模擬出必要的CoreData設置? – kyleturner

回答

2

我之前有過這個問題。 GHUnit測試框架使用其自己的應用程序委託。所以調用委託不會調用您在應用程序委託中編寫的代碼,其行爲可能不穩定。

一般來說,你應該總是處理在不是你的應用程序委託的單例中調用你的managedObjectContext(s)。最近我從OCunit切換到GHUnit,並且必須將所有這些功能抽象爲不同的類。這是一種痛苦,但值得。