我最近更新到了Xcode10,并注意到在iOS 11或iOS 12模拟器上运行的UI测试之间出现了一些奇怪的行为。
如果运行以下UI测试代码,则在IOS 11设备上一切正常。我对设备类型进行了检查,因为它是UISplitViewController的一部分,所以在iPhones上它是以折叠形式显示的单个表。但是,在iPad上有两个表(master和detail),因此本例中的单元格数量较多
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),它将传递该断言。
在我看来,这似乎是测试框架中的一个bug。我刚刚测试了Xcode10.1的测试版,问题仍然存在。有没有其他人遇到过这种情况,或者是我错过了一个可以解释这些事情的变化?
发布于 2018-11-10 04:01:37
我找不到一个简单的例子来说明这个问题,并将其添加到我向苹果提交的bug报告中。这种行为与iOS 11明显不同,在不同的机器上,失败的总次数发生了变化,但也许这更多的是一种行为变化,而不是错误。对我来说,解决这个问题的最好方法是在视图层次结构发生变化时更积极地使用XCUIElement的waitForExistence(timeout:)方法。
https://stackoverflow.com/questions/53047128
复制相似问题