UIImageWriteToSavedPhotosAlbum()
函数将我的测试截图保存到照片相册中:- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}
但是它崩溃并显示错误:
... XXXUITests-Runner[53905:8592232] [access] 应用程序因未提供使用说明而尝试访问隐私敏感数据而崩溃。应用程序的 Info.plist 必须包含一个 NSPhotoLibraryAddUsageDescription 键,其字符串值解释了应用程序如何使用此数据。
我已经在我的 UITest Target 和 App Target 中提供了 NSPhotoLibraryUsageDescription 和 NSPhotoLibraryAddUsageDescription。
我搜索了一段时间,但至今无法找到一种方法使 UITests-Runner 能够将图像保存到照片应用中,没有 UI 级别的操作可以让我允许它。
那么,我该如何实现这一点,即使 UITests-Runner 能够访问隐私敏感数据(在本例中为照片)?
示例项目可在此处获得:
以下是相关的错误详细信息:
测试套件 'All tests' 开始于 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 截图,但是如果我可以从照片相册中获取它们将会很方便,特别是在实际设备上这样做时,我不想每次都下载应用程序容器以获取那些截图(而且,我需要保存高质量的截图)。