【发布时间】:2018-04-06 21:46:49
【问题描述】:
我有一个 iOS 项目在模拟器上运行良好,但在我使用其测试包工作时似乎无法很好地链接到核心数据资源。
我在我的测试类的设置函数中从内存中创建了NSManagedObjectContext。但是,当我尝试运行程序时,测试功能失败,并且控制台有输出
"An NSManagedObject of class 'Projectname.Deck' must have a valid NSEntityDescription."
我有什么遗漏吗?我希望能够在开发应用程序的数据结构时对其进行单元测试。
谢谢!
编辑
测试类的相关部分:
class ProjectNameTests: XCTestCase {
var testDeck: Deck? = nil
func setUpInMemoryManagedObjectContext() -> NSManagedObjectContext {
let managedObjectModel = NSManagedObjectModel.mergedModel(from: [Bundle.main])!
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
do {
try persistentStoreCoordinator.addPersistentStore(ofType: NSInMemoryStoreType, configurationName: nil, at: nil, options: nil)
} catch {
print("Adding in-memory persistent store failed")
}
let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator
return managedObjectContext
}//setUpInMemoryManagedObjectContext
override func setUp() {
super.setUp()
self.context = setUpInMemoryManagedObjectContext()
testDeck = Deck(context: context)
testDeck!.name = "Test Deck"
}//setUp
}//ProjectNameTests
【问题讨论】:
-
显示课程代码和测试,告诉我们你得到了什么,我们可以提供帮助,这里没有足够的信息给你答案
标签: ios swift unit-testing core-data