我正在运行一个带有UIImageWriteToSavedPhotosAlbum()
的UITests案例,以将我的测试屏幕截图保存到相册:
- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}
但它崩溃了错误:
... XXXUITests-Runner [53905:8592232] [access]此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。
我提供了NSPhotoLibraryUsageDescription& NSPhotoLibraryAddUsage描述我的UITest Target& App Target。
搜索了一段时间,我无法想办法让UITests-Runner能够将图像保存到照片应用程序到目前为止,没有UI级别让我按下允许它。
那么,我怎样才能实现这一点,即让UITests-Runner能够访问隐私敏感数据(在这种情况下是照片)?
以下是相关的错误详情:
测试套件'所有测试'开始于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.00s开始测试2018-05-10 11:30:37.695
t = 0.05s设置
t = 0.06s打开com.kjuly.UITestRunnerIssueDemo
t = 0.10s启动com.kjuly.UITestRunnerIssueDemo
t = 3.08s等待com.kjuly.UITestRunnerIssueDemo闲置
t = 6.10s找到目标应用程序0x60c0000dd5e0
t = 6.25s撕下
2018-05-10 11:30:43.948541 + 0800 UITestRunnerIssueDemoUITests-Runner [53905:8592232] [access]此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的Info.plist必须包含一个NSPhotoLibraryAddUsageDescription键,其中包含一个字符串值,向用户解释应用程序如何使用此数据。
顺便说一句,我知道我可以获得自动保存在AppData / Library / Snapshots文件夹下的UITests截图,但是如果我可以从相册中获取它会很方便,特别是在真实设备中这样做时,我不想每次只是为了获取这些截图而下载App Container(而且,我还需要保存高质量的截图)。
答案 0 :(得分:2)
我现在有完全相同的问题,对我有用的临时解决方法是放置图像保存代码:
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
在应用程序代码中,就像在调试模式下运行它一样。