Ho un'implementazione molto semplice XCTestCase
che verifica un tocco su un pulsante e si aspetta che venga visualizzato un controller di avviso. Il problema è che il metodo tap()
non funziona. Posizionando un punto di interruzione nell'IBAzione del pulsante associato, realizzo che la logica non viene nemmeno chiamata.XCUIElement tap() non funzionante
class uitestsampleUITests: XCTestCase {
var app: XCUIApplication!
override func setUp() {
super.setUp()
continueAfterFailure = false
app = XCUIApplication()
app.launch()
}
func testButton() {
let button = app.buttons["Button"]
button.tap()
expectationForPredicate(NSPredicate(format: "exists == 1"), evaluatedWithObject: button, handler: nil)
waitForExpectationsWithTimeout(5.0, handler: nil)
}
}
Inoltre, duplicando le istruzioni button.tap()
rende il passaggio di prova, in questo modo:
func testButton() {
let button = app.buttons["Button"]
button.tap()
button.tap()
expectationForPredicate(NSPredicate(format: "exists == 1"), evaluatedWithObject: button, handler: nil)
waitForExpectationsWithTimeout(5.0, handler: nil)
}
Sto affrontando questo problema in Xcode 7.3.1 Mi sto perdendo qualcosa? E 'un errore?
Ho segnalato un bug ad Apple: https://openradar.appspot.com/26320475 –
Potrebbe essere un problema di temporizzazione? Cosa succede quando aggiungi 1 sec di tempo di attesa prima di provare a toccare? Sfortunatamente, il framework di automazione dell'interfaccia utente, in particolare la generazione di eventi, è pieno di problemi. – Sulthan
Non ho paura. Non funziona anche se aspetto questa aspettativa 'expectationForPredicate (NSPredicate (formato:" hittable == 1 "), valutatoWithObject: button, handler: nil)' –