NSBundle pathForResource возвращает nil
Я пытаюсь загрузить простой текстовый файл в unit test для приложения iOS.
NSString* resourcePath = [[NSBundle mainBundle] pathForResource: @"stopPointsInCircleData" ofType:@"txt"];
NSString* stopPointData = [NSData dataWithContentsOfFile: resourcePath];
Моя проблема в том, что pathForResource возвращает nil.
Файл stopPointsInCircleData.txt находится в каталоге тестового кода, и файл указан правильно в разделе "Копирование ресурсов пакета" в разделе "Фазы сборки" тестовой цели.
Я попытался расслабить поиск, установив Type на nil, но thet тоже не работал.
Любая помощь очень удобна.
Ответы
Ответ 1
Ваша проблема в том, что в unit test target -mainBundle не ссылается на тестовый целевой пакет, а вместо этого на пакет исполняемого файла, в который вводится тестовая цель. В случае целевых тестов ios это ваш комплект приложений; в тестовых целях Mac это может быть либо приложение, либо бегун OCUnit.
Вы должны искать ресурсы в своем тестовом целевом комплекте. Внутри тестового класса это делается следующим образом:
NSBundle *myBundle = [NSBundle bundleForClass: [self class]];
Ответ 2
Существует простой способ достичь этого, вы можете эмулировать этот путь:
Просто направляйся на
Project -> TestTarget -> Build Settings -> Unit Testing (Test Host)
и просто вставьте:
$(BUILT_PRODUCTS_DIR)/AppName.app
Счастливое тестирование.