我正在使用雪松测试框架并尝试从命令行运行测试。 构建因此错误而崩溃:
Unresolved error Error Domain=NSCocoaErrorDomain Code=512 "The operation couldn’t be completed. (Cocoa error 512.)" UserInfo=0x6c5c6c0 {reason=Failed to create file; code = 2}, {
reason = "Failed to create file; code = 2";
}
测试从xcode运行没有任何问题,我只是无法让他们从命令行工作。 有任何想法吗? 感谢
答案 0 :(得分:2)
我遇到了与单元测试和核心数据相同的问题:
首先我遇到了“找不到商店的模特”。我使用这个帖子解决了这个问题:Error running 'Cedar' unit tests from command line
其次我得到了同样的错误:“创建文件失败;代码= 2”
然后我查看了网址并看到了:
NSPersistentStoreCoordinator和NSManagedObjectModel的URL非常不同。但只有当我进行单元测试并且仅在修复第一个错误之后。
通常模型位于“/some/path/<DataModelFile>.app/<DataModel>.momd/
sqlite位于“some / path / Documents /&lt; SQLiteFile&gt; .sqlite
因此,我使用以下代码在测试和运行中获取正确的URL:
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSURL *modelURL = [bundle URLForResource:@"WinNav" withExtension:@"momd"];
basePath = @"";
NSArray *arr = [modelURL pathComponents];
for (int i=0; i<[arr count]-2; i++) {
basePath = [basePath stringByAppendingString:[arr objectAtIndex:i]];
if (i > 0) basePath = [basePath stringByAppendingString:@"/"];
}
NSLog(@"modelURL: %@", modelURL);
NSURL *storeUrl = [NSURL fileURLWithPath:[basePath stringByAppendingString:@"/Documents/Locations.sqlite"]];
如果我没记错,那么我必须创建存储sqlite文件的“Documents”文件夹。
任何评论/建议,如果这对你有用或如何做得更好,我们表示赞赏。