我刚刚开始使用Xcode 7中引入的新Xcode UI测试框架。 我做了第一次非常简单的测试时遇到了一些问题,并且想知道我是否做错了。
我有一个结构简单的应用程序:
我的第一个测试就是当您选择“开始UI测试”时。单元格,您将移动到导航栏中具有播放按钮的视图。 我的问题是,如果我添加一个sleep(2)调用,或添加一个断点并停止执行之前按下表视图单元格上的tap()调用,一切都按预期工作,应用程序移动到在下一个视图中,测试成功,播放按钮被检测为存在。但是,如果此时我没有添加睡眠呼叫(2),则tap()似乎什么都不做,应用程序不会导航到下一个视图,因此测试失败,因为它无法找到该游戏按钮(应用程序仍在视图1上)。
以下代码:
func testExample() {
let app = XCUIApplication()
let tablesQuery = app.tables
let firstCell = tablesQuery.element.cells.staticTexts["Start UI Tests"]
sleep(2) //Only by adding in a call to sleep() before does the tap() call do anything
firstCell.tap()
let exists = NSPredicate(format: "exists == true")
let playButton = app.navigationBars["Live_App_Demo.UITestsTableView"].buttons["Play"]
expectationForPredicate(exists, evaluatedWithObject: playButton, handler: nil)
waitForExpectationsWithTimeout(5, handler: nil)
XCTAssert(playButton.exists)
}