Включение каталога активов в тестовые цели

В одном из моих XCTests классов мне нужно загрузить изображение из каталога ресурсов, чтобы проверить логику обработки изображений. Однако похоже, что использование UIImage(named: "imageName") возвращает nil в тестовой цели.

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


person Enrico Susatyo    schedule 20.12.2016    source источник


Ответы (2)


Ответ @mylovemhz правильный, но неполный. Вам нужно сослаться на комплект:

Swift 3:

UIImage(named: "imageName", in: Bundle(for: MyTestClass.self), compatibleWith: nil)

Также убедитесь, что ваш актив включен в ту же цель, что и ваш тестовый класс.

person garie    schedule 25.04.2017
comment
У меня проблемы с получением аналогичных функций для работы с NSImage (macOS). - person Nicolas Miari; 26.03.2018
comment
Можете ли вы перенести этот ответ и на объективный? - person cguenther; 01.04.2019

Согласно документации, вы должны добавить их во время выполнения.

Если в ваших тестах используются ресурсы - файлы данных, изображения и т. Д. - их можно добавить в тестовый пакет и получить к ним доступ во время выполнения с помощью API NSBundle. Использование +[NSBundle bundleForClass:] с вашим тестовым классом гарантирует, что вы получите правильный пакет для извлечения ресурсов. Для получения дополнительной информации см. Справочник по классу NSBundle.

В Swift это было бы примерно так:

let appBundle = Bundle(for: type(of: MyClass) as! AnyClass)
person mylovemhz    schedule 12.01.2017