簡體   English   中英

用獼猴桃,核心數據和魔法記錄進行單元測試

[英]Unit Testing with Kiwi, Core Data and Magical Record

我在使用'假'商店進行單元測試時遇到了問題。 我已經通過將其框架文件夾添加到我的項目並使用Kiwi測試替換Xcode的默認測試用例來安裝Kiwi。 一切都運行良好。

由於我使用的是Core Data,我需要創建一個“假”存儲,這樣我才能使用真正的數據庫。 我使用http://www.cimgf.com/2012/05/15/unit-testing-with-core-data/作為我的基本指南。

但是,由於Xcode的默認測試實現在啟動應用程序后運行測試,因此在運行任何測試之前,我的'[MagicalRecord setupCoreDataStackWithStoreNamed:@“Store.sqlite”]'仍會在App Delegate中觸發。

當測試嘗試使用'[MagicalRecord setupCoreDataStackWithInMemoryStore]'時,這個sqlite存儲被設置,因此內存存儲不會被設置(AFAIK),因為前面提到的設置堆棧方法首先檢查是否堆棧已經存在,只是返回而不執行任何操作,所以我最終仍然使用sqlite數據庫。

據我所知,這給我留下了以下選擇:

  1. 為測試用例添加一些環境變量或標志,並在app委托中檢查這些變量,根據此變量創建相應的存儲(即為了測試而調整我的實際代碼 - 不漂亮,任何練習TDD都不推薦) / BDDers)。
  2. 在我的所有控制器上添加托管上下文屬性,以便我可以手動指定要使用的商店(刪除MagicalRecord單例訪問模式的大量細節)。
  3. 玩(仔細)我的實際數據庫(我真的不願意考慮這個)。

這些似乎都不是一個特別好的解決方案,所以我希望有人能夠看到一個我愚蠢地忽略的更好的解決方案。

您的測試不應該啟動應用程序委托。 嘗試設置測試,以便只有測試設置內存核心數據存儲,如您引用的文章中所述。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM