Ошибка запуска модульных тестов '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/.app/.momd/
Sqlite находится в "some / path / Documents /.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.

Любые комментарии / предложения, если это работает для вас или как это сделать лучше, приветствуются.

Другие вопросы по тегам