Intereting Posts
Как скрыть / отобразить раздел в окне коллекции UIPopovercontroller изменяет размер после нажатия нового контроллера View на navccontroller InApp-Покупки в iOS didFailWithError: Иконка моего приложения не отображается в Game Center Вычислить конечную позицию UIView после щелчка с помощью UIPanGestureRecognizer iOS Как выбрать строку, когда человек выбирает UITextField внутри него? Не удается найти закрытый ключ приложения для приложения iOS. Интернационализация пользовательского интерфейса iPhone Как заменить вид контейнера с помощью кнопок на панели инструментов? Невозможно обновить пользовательский интерфейс в методах делегатов NSURLSession Какое разрешение требуется для создания изображений для универсальных приложений iOS? CoreBluetooth и BluetoothManager, устройство не BLE Хотите добавить изображение в качестве текстуры в scenekit ios Невозможно преобразовать значение типа «UITableViewCell» в указанный тип Как указать квадратный (фактически круглый) аватар в Xcode 5 раскадровки с автоматической компоновкой?

Добавление цели тестирования модулей в существующий проект XCode не может найти ресурс в комплекте

Я добавил новую цель типа Cocoa Touch Unit Testing Bundle в существующий проект iOS, тестовый пример и некоторые файлы jpg, которые мне нужны для тестирования.

Я пытаюсь загрузить изображение из тестового пакета, используя следующий код:

@implementation PhotosViewController_Tests : XCTestCase -(void)addImage:(NSString *)imageName { NSBundle *bundle = [NSBundle bundleForClass:[self class]]; NSString *imagePath = [bundle pathForResource:imageName ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; ... } 

Однако связка возвращает основной пакет, а не тестовый пакет, а imagePath и изображение – ноль.

Я могу успешно загружать изображения из основного пакета (используя этот код), но я не понимаю, почему bundleForClass возвращает mainBundle вместо тестового блока.

Я напечатал [NSBundle allBundles] и я также получил основной пакет:

 "NSBundle </var/mobile/Applications/uuid/Photos Light.app> (loaded)" 

Я думаю, что это связано с добавлением целевой единицы тестирования после создания проекта, но я не могу понять, что еще делать, чтобы загружать изображения из тестового пакета.

спасибо

Попробуйте добавить расширение NSBundle в тестовую цель, которая выглядит примерно так …

 @implementation NSBundle (MyAppTests) + (NSBundle *)testBundle { // return the bundle which contains our test code return [NSBundle bundleWithIdentifier:@"com.mycompany.MyAppTests"]; } @end 

Затем, когда вам нужно загрузить ресурсы из тестового пакета, импортируйте эту категорию, а затем ваш код будет выглядеть …

 NSString *imagePath = [[NSBundle testBundle] pathForResource:imageName ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:imagePath];