Xcode 10 UI测试在iOS 12设备上失败

时间:2018-10-29 13:58:56

标签: xcode xcode-ui-testing

我最近更新到了Xcode 10,并且发现针对iOS 11或iOS 12模拟器运行的UI测试之间存在一些奇怪的行为。

如果运行以下UI测试代码,则一切将在IOS 11设备上按预期工作。我正在检查设备类型,就像在iPhone上一样,它是一个折叠的表格,因为它是UISplitViewController的一部分,所以以折叠的形式显示。但是,在iPad上有两个表(主表和明细表),因此在这种情况下,单元格的数量会更多

XCTAssertEqual(app.isRunningOnIpad ? 7 : 4, app.tables.cells.count)

但是,当我切换到同一设备(iPhone 7)但运行iOS 12.0时,上面的断言未能说明7不等于4。这表明即使对UISplitViewController中的所有单元进行计数,仅显示了一个(与iOS 11相比有所更改)

如果在该行上中断,然后在调试器中打印出app.tables.cells.count的值,则它是正确的(4)。如果我在那条线上中断,然后在调试器中继续,则测试通过。如果您在断言之前添加sleep(1),则会通过。

在我看来,这似乎是测试框架中的错误。我刚刚测试了Xcode 10.1的beta版本,问题仍然存在。有没有其他人遇到过这个问题,或者我错过了一个可以解释事情的变化?

1 个答案:

答案 0 :(得分:1)

我无法找到一个简单的示例来说明问题,该问题已添加到我的Apple错误报告中。行为肯定与iOS 11不同,并且在不同计算机上故障总数发生了变化,但也许更多是行为变化而不是错误。对我来说,解决此问题的最佳方法是在视图层次结构发生更改时更积极地使用XCUIElement的waitForExistence(timeout :)方法。