我正在运行一个UITests案例w/ UIImageWriteToSavedPhotosAlbum(),以将我的测试屏幕截图保存到Photos相册:
- (void)testExample
{
XCUIScreenshot *screenshot = [_app screenshot];
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);
}但是它崩溃了w/错误:
..。XXXUITes-Runner53905:8592232这个应用程序崩溃了,因为它试图访问隐私敏感的数据,而没有使用描述。应用程序的Info.plist必须包含一个带有字符串值的NSPhotoLibraryAddUsageDescription键,向用户解释应用程序如何使用这些数据。
我为我的NSPhotoLibraryUsageDescription目标和应用程序目标提供了NSPhotoLibraryAddUsageDescription和UITest。
搜索了一段时间后,我想不出一种让UITests能够保存图片到Photos应用程序的方法,没有UI级别允许我按下它。
那么,我如何做到这一点,即,使UITests能够访问隐私敏感的数据(在本例中的照片)?
此处提供示例项目:
下面是相关的错误细节:
测试套件“所有测试”于2018-05-10 :30:37.693开始。 测试套房“UITestRunnerIssueDemoUITests.xctest”于2018-05-10 :30:37.694开始 测试套房“UITestRunnerIssueDemoUITests”于2018-05-10 :30:37.694开始 测试用例'-UITestRunnerIssueDemoUITests‘已启动。 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 UITestRunnerIssueDemoUITests-Runner53905:8592232这个应用程序已经崩溃,因为它试图访问隐私敏感数据而没有使用说明。应用程序的Info.plist必须包含一个带有字符串值的NSPhotoLibraryAddUsageDescription键,向用户解释应用程序如何使用这些数据。
顺便说一句,我知道我可以获得自动保存在AppData/Library/快照文件夹下的UITests屏幕截图,但是如果我可以从Photos相册中获得它将是很方便的,特别是在实际设备中这样做时,我不愿意每次只为了获取这些屏幕快照而下载AppData(而且,我需要保存的高质量的屏幕快照)。
发布于 2018-06-14 16:07:21
现在我有了完全相同的问题,临时解决办法是将图像保存代码:
UIImageWriteToSavedPhotosAlbum(screenshot.image, nil, nil, nil);在应用程序代码中,就像在调试模式下运行它一样。
https://stackoverflow.com/questions/50265129
复制相似问题