Swift: Тайм-аут, когда ориентация модульного тестирования изменяется после обновления до Xcode 10 - PullRequest
0 голосов
/ 20 сентября 2018

Недавно мы обновили Xcode 8 до 10. После того, как, наконец, все снова собрали для компиляции, у меня возникла проблема в наших модульных тестах, которые связаны с изменением ориентации.То, что я делал, чтобы симулировать изменения ориентации устройства, было

    XCUIDevice.shared().orientation = .landscapeLeft
    ...
    XCUIDevice.shared().orientation = .faceUp
    ...
    etc.

Теперь, когда эта строка выполняется, «устройство» (симулятор iPhone 8+) делает соответствующее изменение ориентации, но вызов в конечном итоге не удаетсяиз-за тайм-аута на подтверждении:

    [iMomTests.DataScreenTests testLandscape] : Failed to set orientation: Error Domain=XCTDaemonErrorDomain Code=15 "Timed out waiting for confirmation of orientation change." UserInfo={NSLocalizedDescription=Timed out waiting for confirmation of orientation change.}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Это расширение, которое я придумал на основе метода поворота KIF, упомянутого выше.

public extension XCTestCase {
    public func waitUntilRotation(to orientation: UIInterfaceOrientation) {
        guard UIApplication.shared.statusBarOrientation != orientation else {
            return
        }
        UIDevice.current.setValue(orientation.deviceOrientation.rawValue, forKey:"orientation")
    }
}

Затем в тестовом примере вы вызываете этот метод в начале, чтобы убедиться, что ориентация соответствует вашей.ожидая.

public func testSomethingInPortrait() {
    waitUntilRotation(.portrait)
    ...
}
0 голосов
/ 28 сентября 2018

В итоге мы расширили KIFSystemTestActor и определили функцию поворота:

func rotate(to orientation: UIDeviceOrientation) {
    self.simulateDeviceRotation(to: orientation)
}
...