为什么XCTest UI测试有时会失败并显示错误"在原始调度的[n秒]内未能接收到事件传递确认"

use*_*135 6 cocoa xctest swift xcode-ui-testing

XCTest UI对Mac应用程序进行了相当正常的测试,该应用程序单击应用程序菜单中的某些菜单项以打开窗口.

在某些地方 - 比如我自己的Mac - 测试工作正常.但在其他地方 - 比如Travis CI- 他们失败了,出现了这个错误:

UI Testing Failure - Failed to receive event delivery confirmation within 2.5s of the original dispatch.
...
menuBarsQuery.menuBarItems["Top level menu item"].click()
menuBarsQuery.menuItems["Menu item in sub menu"].click()
Run Code Online (Sandbox Code Playgroud)

系统:

  • Mac OS 10.11.5
  • Xcode 7.2.1
  • Mac OS SDK版本:10.11.2
  • Swift 2.1.1

稍微消毒的测试用例版本:

import XCTest

class FooUITests: XCTestCase {

    override func setUp() {
        super.setUp()
        continueAfterFailure = false
        XCUIApplication().launch()
    }

    override func tearDown() {
        super.tearDown()
    }

    func testCanDoSomething() {
        let app = XCUIApplication()

        let menuBarsQuery = app.menuBars
        menuBarsQuery.menuBarItems["Top level menu item"].click()
        menuBarsQuery.menuItems["Menu item in sub menu"].click()

        let window = app.windows["Foo"]

        // Rest of test, assertions, actions in window etc.
    }

}
Run Code Online (Sandbox Code Playgroud)

它在本地不可复制,所以我会问听众......为什么会发生这种错误?