Я использую случай UITests с UIImageWriteToSavedPhotosAlbum()
, чтобы сохранить мой тестовый скриншот в альбом фотографий:
- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}
, но он потерпел крах с ошибкой:
... XXXUITests-Runner [53905: 8592232] [доступ] Это приложение упало из-за попытки доступа к конфиденциальным данным без описания использования.Info.plist приложения должен содержать ключ NSPhotoLibraryAddUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Я предоставил и NSPhotoLibraryUsageDescription & NSPhotoLibraryAddUsageDescription для своей цели UITest Target & App.
Некоторое время я искал, я не могу найти способ позволить UITests-Runner сохранять изображение в приложении Photos, пока нет уровня пользовательского интерфейса, который позволял бы мне нажимать, чтобы разрешить его.
Итак, как мне этого добиться, то есть сделать так, чтобы UITests-Runner мог получать доступ к конфиденциальным данным (в данном случае к фотографиям)?
Пример проекта, доступный здесь:
UITestRunnerIssueDemo
Ниже приведена подробная информация об ошибке:
Набор тестов «Все тесты», запущенные в 2018-05-10 11: 30: 37.693
Набор тестов 'UITestRunnerIssueDemoUITests.xctest' запущен в 2018-05-10 11: 30: 37.694
Набор тестов 'UITestRunnerIssueDemoUITests' запущен в 2018-05-10 11: 30: 37.694
Тестовый случай '- [UITestRunnerIssueDemoUITests testExample] 'начался.
t = 0,00 с. Начать тест в 2018-05-10 11: 30: 37,695
t = 0,05 с. Установить
t = 0,06 с. Открыть com.kjuly.UITestRunnerIssueDemo
t = 0.10s Запустить com.kjuly.UITestRunnerIssueDemo
t = 3.08s Ожидать com.kjuly.UITestRunnerIssueDemo для простоя
t = 6.10s Найти целевое приложение 0x60c0000dd5e0
t = 6.25s Tear Down
2018-05-10 11: 30: 43.948541 + 0800 UITestRunnerIssueDemoUITests-Runner [53905: 8592232] [доступ] Это приложение упало из-за попытки доступа к конфиденциальным данным без описания использования.Info.plist приложения должен содержать ключ NSPhotoLibraryAddUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.
Кстати, я знаю, что могу получить скриншот UITests, который автоматически сохраняется в папке AppData / Library / Snapshots, но будет удобно, если я смогу получить его из Фотоальбомаособенно если это происходит на реальном устройстве, я не хочу загружать Контейнер приложений каждый раз только для получения этих снимков экрана (а также мне нужен сохраненный снимок высокого качества).