NSBundle pathForResource возвращает ноль - PullRequest
11 голосов
/ 06 февраля 2012

Я пытался загрузить простой текстовый файл в модульном тесте для приложения для iOS.

NSString* resourcePath = [[NSBundle mainBundle] pathForResource: @"stopPointsInCircleData" ofType:@"txt"];
NSString* stopPointData = [NSData dataWithContentsOfFile: resourcePath];

Моя проблема в том, что pathForResource возвращает nil.

Файл stopPointsInCircleData.txt находится в каталоге кода теста, и файл правильно указан в разделе «Копировать ресурсы комплекта» в «Фазы сборки» цели теста.

Я попытался ослабить поиск, установив типдо нуля, но они тоже не сработали.

Любая помощь очень ценится.

Ответы [ 2 ]

28 голосов
/ 06 февраля 2012

Ваша проблема в том, что в модульном тесте -mainBundle ссылается не на пакет целей тестирования, а на пакет исполняемого файла, в который вводится цель теста.В случае целей тестирования ios это ваш пакет приложений;в тестовых целях Mac это может быть либо комплект приложений, либо бегун OCUnit.

Вам следует искать ресурсы в комплекте тестовой мишени.Внутри тестового класса это делается так:

NSBundle *myBundle = [NSBundle bundleForClass: [self class]];
6 голосов
/ 20 июня 2014

Существует простой способ добиться этого, вы можете эмулировать этот путь пакета:

Просто зайдите на

Project -> TestTarget -> Build Settings -> Unit Testing (Test Host) и просто вставьте:

    $(BUILT_PRODUCTS_DIR)/AppName.app

Счастливого тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...