Xcode UI测试:在谓词失败时自动拍摄快照?
发布时间:2020-12-14 18:12:28 所属栏目:百科 来源:网络整理
导读:每当测试失败时,Xcode UI Testing都会在结果导航器中自动截取屏幕,这非常有用.但是,这不包括由于谓词失败而失败的测试.由于谓词通常用于基本检查(例如,当前视图中是否存在元素),这是一个巨大的缺点,因为屏幕截图可用于诊断测试失败时应用程序中发生的情况.
每当测试失败时,Xcode UI Testing都会在结果导航器中自动截取屏幕,这非常有用.但是,这不包括由于谓词失败而失败的测试.由于谓词通常用于基本检查(例如,当前视图中是否存在元素),这是一个巨大的缺点,因为屏幕截图可用于诊断测试失败时应用程序中发生的情况.
有谁知道如何强制截图?这是否需要集成Fastlane快照工具? 解决方法
您不必为此集成Fastlane Snapshot. Snapshot用于强制截屏的唯一技巧是触发此代码:
XCUIDevice.shared().orientation = .unknown 这不会像Snapshot documentation上所述那样改变UI. 不幸的是,如果您对谓词使用期望并且将此代码放入waitForExpectations(timeout:handler :)处理程序关闭并且我不知道原因,那么这将不起作用. 要解决此问题,您可以创建自己的XCTestObservation处理程序,如下所示: class MockObserver: NSObject,XCTestObservation { func testCase(_ testCase: XCTestCase,didFailWithDescription description: String,inFile filePath: String?,atLine lineNumber: UInt) { XCUIDevice.shared().orientation = .unknown } } XCTestObservationCenter.shared().addTestObserver(MockObserver()) 您可以将此代码放在setUp()方法或特定的test …方法中. 测试输出有点奇怪,因为它会显示“将设备方向设置为未知”作为错误和内部的实际谓词错误,但您将获得截图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |