2012-09-11 111 views
4

我正在使用Cedar測試框架並嘗試從命令行運行測試。 構建崩潰,並此錯誤:錯誤從命令行運行'Cedar'單元測試

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中運行沒有任何問題的測試,我不能讓他們在命令行中運行。 任何想法? 感謝

回答

2

我有單元測試和核心數據同樣的問題:

首先,我碰到了「無法找到專賣店模式」。 Error running 'Cedar' unit tests from command line

其次,我得到了同樣的錯誤:我該用這個線程固定的「無法創建文件;代碼= 2」

然後我看了一下網址,發現:

的網址NSPersistentStoreCoordinator和NSManagedObjectModel非常不同。但只有當我進行單元測試時,只有在修復第一個錯誤之後。

通常的模式是 「/一些/路徑/ <DataModelFile>的.app/< DataModel的> .momd/
SQLite的是在」 一些/路徑/文件/ <SQLiteFile> .sqlite

所以我用下面的代碼來獲取兩個測試和運行正確的網址:

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的文件存儲在「文檔」文件夾中。

任何意見/建議,如果這對你有用或如何做得更好,值得讚賞。

+0

這對我有效,謝謝。小細節,您需要添加Documents/Locations.sqlite沒有/在前面。 – ggfela