"plist" не загружается из класса юнит-теста iPhone - PullRequest
3 голосов
/ 16 ноября 2009

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

NSString *path = [[NSBundle mainBundle] pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];

При тестировании приложения в симуляторе и на устройстве все работает. НО, когда я запускаю модульное тестирование, код "[arrayOfShops count]" всегда возвращает "0".

У меня есть те же файлы в «Копировать комплект ресурсов», «Компилировать источники» и «Связать двоичные файлы с библиотеками» для основной цели и цели модульного тестирования. Я также пробовал с основной целью и без нее как «Прямые зависимости» для цели модульного теста.

Кто-нибудь знает, в чем проблема?

Ответы [ 3 ]

2 голосов
/ 27 декабря 2012

Вы не можете использовать [NSBundle mainBundle] с модульным тестом XCode, который будет работать, если использовать вместо этого:

NSBundle *bundle = [NSBundle bundleForClass:[self class]];

NSString *path = [bundle pathForResource:@"availableshops" ofType:@"plist"];
NSArray *arrayOfShops = [[NSArray alloc] initWithContentsOfFile:path];
1 голос
/ 19 марта 2013

См. этот ответ . Очевидно, mainBundle не работает в контексте тестового пакета.

0 голосов
/ 17 ноября 2009

Вы уверены, что корневой элемент plist является массивом? Помогает опубликовать список.

Вы также можете попробовать это:

NSArray* shopsArray = [NSArray arrayWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"availableshops.plist"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...