【发布时间】: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 目标。
标签: ios swift unit-testing core-data