我正在运行一个 UITests 案例UIImageWriteToSavedPhotosAlbum()
,以将我的测试屏幕截图保存到相册:
- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}
但它因错误而崩溃:
... XXXUITests-Runner[53905:8592232] [access] 此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSPhotoLibraryAddUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据。
我已将 NSPhotoLibraryUsageDescription 和 NSPhotoLibraryAddUsageDescription 提供给我的 UITest 目标和应用程序目标。
搜索了一段时间,到目前为止,我想不出一种方法让 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 to idle
t = 6.10s Find the Target Application 0x60c0000dd5e0
t = 6.25s Tear Down
2018-05-10 11:30:43.948541+0800 UITestRunnerIssueDemoUITests-Runner[53905:8592232] [access] 这个应用程序已经崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSPhotoLibraryAddUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据。
顺便说一句,我知道我可以获取自动保存在 AppData/Library/Snapshots 文件夹下的 UITests 屏幕截图,但是如果我可以从相册中获取它会很方便,尤其是在真实设备中这样做时,我不愿意每次下载 App Container 只是为了获取这些屏幕截图(而且,我需要保存的高质量屏幕截图)。