Не могу загрузить файлы из NSBundle в тестовом модуле iphone

Я использую XCode 4.

Может кто-нибудь объяснить мне, почему, когда я написал модульный тест (в соответствии с целью тестирования), он не может найти мой локальный файловый ресурс? Я пытаюсь загрузить файл plist из NSBundle в модульном тесте, но он не работает в цели модульного теста. Я попытался бросить его под область классов цели теста.

Вот мой код:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"urlMappings.plist"];
self.urlMappings  = [NSDictionary dictionaryWithContentsOfFile:finalPath];

self.urlMappings по какой-то причине пуст, хотя urlMappings.plist определенно существует в моем проекте. Вот источник urlMappings.plist, чтобы доказать, что это на самом деле словарь.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>%server%view.html</key>
    <string>testHtml1.html</string>
</dict>
</plist>

Есть идеи? Спасибо

2 ответа

Решение

Под целью теста вы не должны использовать [NSBundle mainBundle], потому что это основной пакет, а не тестовый пакет. Вы должны использовать [NSBundle bundleForClass:[self class]] replace.

Решение (которое не имеет смысла) состоит в том, что его не было в пакетных ресурсах основной цели. Он должен быть в комплекте ресурсов обоих целей, хотя я использую его только в тесте.

Кто-нибудь знает, почему это так?

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