【发布时间】:2018-01-16 18:25:36
【问题描述】:
我可以在 XCTestCase 测试中创建一个这样的实体就好了:
let entity = NSEntityDescription.insertNewObject(
forEntityName: String(describing: Example.self),
into: inMemoryManagedObjectContext)
但如果我这样做:
let item = Example(context: inMemoryManagedObjectContext)
测试将失败并...
failed: caught "NSInvalidArgumentException", "An NSManagedObject of
class 'myappTests.Example' must have a valid NSEntityDescription."
如果我不能按照通常的方式创建 Core Data 对象,我应该如何测试它们?
【问题讨论】:
-
您是否将类文件添加到测试目标?或者您是否在测试类中使用 @testable import MyAppTarget 导入您的 MyAppTarget?
-
我很确定我导入了我需要的所有东西,因为我可以创建对象并使用
NSEntityDescription.insertNewObject或相关函数的旧方式很好地使用它们。 -
有区别,你能检查一下你的示例类文件是添加到应用目标还是测试目标吗?
-
是的。如果没有,那么我的示例将无法编译
-
这就是问题所在,你永远不应该将你的类文件添加到测试目标中,而是将你的应用目标作为一个模块导入你的测试类中。
标签: ios swift core-data xctest