如何快速测试框架中使用的核心数据模型
Posted
技术标签:
【中文标题】如何快速测试框架中使用的核心数据模型【英文标题】:how to test core data model used in a framework in swift 【发布时间】:2019-10-03 07:12:22 【问题描述】:我正在编写一个 swift 框架,并使用来自“pod lib create”命令的模板。在我的开发 pod 中,我创建了一个核心数据模型文件,并在我的框架中使用核心数据。现在我想为它编写单元测试。这是我的单元测试类代码:
import XCTest
import CoreData
@testable import MyFramework
class MyClassTests: XCTestCase
var testPersistentContainer: NSPersistentContainer?
override func setUp()
let persistentStoreDescription = NSPersistentStoreDescription()
persistentStoreDescription.type = NSInMemoryStoreType
let container = NSPersistentContainer(name: "MyCoreDataModelFileName")
container.persistentStoreDescriptions = [persistentStoreDescription]
container.loadPersistentStores (storeDescription, error) in
if let error = error
fatalError(error.localizedDescription)
self.testPersistentContainer = container
override func tearDown()
func testSomething()
// the persistent container I'm trying to use is nil
XCTAssertNotNil(self.testPersistentContainer)
我知道问题出在哪里,问题是测试目标找不到我的核心数据模型文件,当我在示例应用目标中创建一个具有正确名称的文件时,上述测试通过。但是
问题
测试框架核心数据模型的正确方法是什么?
【问题讨论】:
当你想测试你的模型时你想做什么?如果您的计划是创建一个模型、保存它并测试它是否正确持久化,那么您实际上是在测试 CoreData 框架本身,这可能是个坏主意,Apple 已经为您处理好了。 我不想测试核心数据功能,我想测试我的功能,例如,如果我使用 myClass.add(something),我想测试它是否在核心中保存了一些东西或者不是。等等…… 好吧,我有一段时间没有使用 CoreData,但是您检查过您的模型文件是否已链接到您的测试目标(Xcode 中的右侧面板)? 不是,我的主要问题是我不知道如何在可可豆库模板中链接它,因为当我点击模型文件时,Xcode 不显示主应用程序或测试目标,而是显示框架和 pod 目标。 【参考方案1】:您是否尝试过从框架包中加载 Core Data 模型?
let managedObjectModel = NSManagedObjectModel.mergedModel(from: nil)
那么您就不需要将它添加到您的测试目标中
【讨论】:
以上是关于如何快速测试框架中使用的核心数据模型的主要内容,如果未能解决你的问题,请参考以下文章