Iphone 如何使用CoreData进行单元测试?
从CoreData模板开始,我构建了一个iphone应用程序,它使用CoreData操作数据模型。工作至今 现在我决定,我需要一些“单元”测试来检查核心数据模型是否被正确操作(到目前为止,我只做了手动检查,并直接用CoreDataEditor检查了数据库)。我跟着 关于如何在Xcode中设置单元测试。到目前为止,这对逻辑和应用程序测试都有效。但是,我无法让“单元”测试与CoreData后端一起工作(它找不到我的数据模型,我不知道要包含什么或链接什么等等) 是否有关于如何对核心数据iphone应用程序进行“单元”测试的指针/说明 PS:我知道使用数据库后端进行测试并不是严格意义上的“单元”测试。我不在乎测试是在带有真实应用程序(ApplicationTesting)的模拟器上进行的,还是只是一个专门用于单元测试(LogicTest)的核心数据后端,我会在设置过程中填充一些测试对象 编辑:我找到了 和 但现在我遇到了中描述的问题Iphone 如何使用CoreData进行单元测试?,iphone,unit-testing,core-data,Iphone,Unit Testing,Core Data,从CoreData模板开始,我构建了一个iphone应用程序,它使用CoreData操作数据模型。工作至今 现在我决定,我需要一些“单元”测试来检查核心数据模型是否被正确操作(到目前为止,我只做了手动检查,并直接用CoreDataEditor检查了数据库)。我跟着 关于如何在Xcode中设置单元测试。到目前为止,这对逻辑和应用程序测试都有效。但是,我无法让“单元”测试与CoreData后端一起工作(它找不到我的数据模型,我不知道要包含什么或链接什么等等) 是否有关于如何对核心数据iphone应
... 嗯,除了我有错误代码134:-((有什么想法吗?好的。我让它工作了
- (void) setUp {
NSArray *bundles = [NSArray arrayWithObject:[NSBundle bundleForClass:[self class]]];
NSManagedObjectModel *mom = [NSManagedObjectModel mergedModelFromBundles:bundles];
STAssertNotNil(mom, @"ManangedObjectModel ist nil");
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
STAssertTrue([psc addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:NULL] ? YES : NO, @"Should be able to add in-memory store");
self.context = [[NSManagedObjectContext alloc] init];
self.context.persistentStoreCoordinator = psc;
[mom release];
[psc release];
}
现在,您已经设置了一个具有核心数据支持的逻辑测试。通过构建LogicTests目标,可以隔离(无模拟器)完成逻辑测试。为此,将创建一个临时内存数据库。在您的测试方法中,您现在可以执行以下操作:
- (void) testStuff {
NSManagedObject *managedObj = [NSEntityDescription insertNewObjectForEntityForName:@"Account" inManagedObjectContext:self.context];
[managedObj setValue:[NSNumber numberWithInt:90000] forKey:@"id"];
NSError *error = nil;
if (![self.context save:&error]) {
STFail(@"Fehler beim Speichern: %@, %@", error, [error userInfo]);
}
}
希望这有助于……玩得开心!很遗憾,该链接再也找不到任何地方了。我发现该链接指向的示例代码似乎是该链接的同伴,但该链接已不再有效: