【发布时间】:2018-10-20 06:22:46
【问题描述】:
我正在运行带有UIImageWriteToSavedPhotosAlbum() 的 UITests 案例,以将我的测试屏幕截图保存到相册:
- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}
但它因错误而崩溃:
... XXXUITests-Runner[53905:8592232] [access] 此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSPhotoLibraryAddUsageDescription 键和一个向用户解释应用如何使用这些数据的字符串值。
我已将 NSPhotoLibraryUsageDescription 和 NSPhotoLibraryAddUsageDescription 提供给我的 UITest Target 和 App Target。
搜索了一段时间,到目前为止,我想不出一种方法让 UITests-Runner 能够将图像保存到照片应用程序,没有 UI 级别可以让我按下以允许它。
那么,我怎样才能做到这一点,即让 UITests-Runner 能够访问隐私敏感数据(在这种情况下为照片)?
此处提供示例项目:
以下是相关的错误详情:
测试套件“所有测试”于 2018 年 5 月 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(而且,我需要保存的高质量屏幕截图)。
【问题讨论】:
-
更新:我已经发送了一份 TSI 并刚刚收到回复 “我们的工程师已经审核了您的请求,并确定您遇到了一个已知问题目前没有已知的解决方法。” 并按照建议提交了相关的错误报告(#40317463),希望在进一步的 Xcode 版本中得到处理。
标签: ios xcode cocoa-touch xcode-ui-testing xcuiscreenshot