Swift – как проверить, обновлялась ли метка при нажатии кнопки

Я использую очень простой калькулятор и пытаюсь проверить, обновляется ли метка при нажатии кнопки.

Мой метод тестирования выглядит следующим образом:

let app = XCUIApplication()
app.buttons["9"].tap()

Я визуально вижу, как обновляется метка, но не знаю, как это проверить.

Я думаю, мне нужно использовать XCUIElementQuery API для запроса метки, а затем утверждать, что текст метки изменился. Я просто не знаю, как это сделать.

Я не уверен в следующих вопросах:

  • Нужно ли мне знать, какое значение имеет метка, чтобы иметь возможность запрашивать?
  • Есть ли способ запросить метку, не зная значения при запуске приложения?

person breaktop    schedule 23.05.2016    source источник


Ответы (2)


При тестировании пользовательского интерфейса вам, возможно, придется подумать о своей проблеме немного по-другому. Вместо утверждения, что что-то изменилось, проверьте, существует ли новая вещь.

На практике это означает проверку появления метки с вашим ожидаемым значением. Не проверяйте, что существующий изменился на правильное состояние.

Итак, в вашем примере вы можете сделать следующее. Это проверит, что при нажатии кнопки «9» появляется метка с текстом «42».

let app = XCUIApplication()
app.buttons["9"].tap()
XCTAssert(app.staticTexts["42"].exists)
person Joe Masilotti    schedule 23.05.2016
comment
Относится ли staticTexts к тексту метки или может относиться к текстовому значению кнопки? - person breaktop; 23.05.2016
comment
staticTexts относится только к меткам, используйте buttons для UIButton. - person Joe Masilotti; 23.05.2016

Я бы сказал, что вы устанавливаете разные accessibilityLabel или accessibilityIdentifier для кнопки, которую хотите нажать, а затем сравниваете значения до и после tap() и проверяете, изменилось ли label с помощью утверждения XCTAssertNotEqual,

В коде приложения:

button.accessibilityIdentifier = "TappableButton"

Затем в тестовом файле:

let app = XCUIApplication() let buttonLabel = app.buttons["TappableButton"].label app.buttons["TappableButton"].tap() XCTAssertNotEqual(buttonLabel, app.buttons[TappableButton].label)

person itsViksIn    schedule 23.05.2016