加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 …方法中.

测试输出有点奇怪,因为它会显示“将设备方向设置为未知”作为错误和内部的实际谓词错误,但您将获得截图:

Test execution log

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读