Ошибка запуска модульных тестов '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 без проблем, я просто не могу заставить их работать из командной строки. Есть идеи? Спасибо
1 ответ
У меня была такая же проблема с юнит-тестами и базовыми данными:
Сначала я столкнулся с "Не могу найти модель для магазина". Я исправил это с помощью этой темы: Ошибка запуска модульных тестов 'Cedar' из командной строки
Во-вторых, я получил ту же ошибку: "Не удалось создать файл; code = 2"
Затем я посмотрел на URL-адреса и увидел, что:
URL для NSPersistentStoreCoordinator и NSManagedObjectModel довольно различны. Но только когда я делаю Unit-Testing и только после исправления первой ошибки.
Обычно модель находится в "/some/path/
Sqlite находится в "some / path / Documents /
Поэтому я использую следующий код для получения правильных 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.
Любые комментарии / предложения, если это работает для вас или как это сделать лучше, приветствуются.