2016-05-23 7 views
2

У меня очень простой калькулятор, и я пытаюсь проверить, обновляется ли метка при нажатии кнопки.Swift - Как проверить, обновляется ли метка при нажатии кнопки?

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

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

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

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

Я не уверен, следующие вопросы:

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

ответ

4

С тестирования UI вы, возможно, придется подумать о вашей проблеме немного по-другому. Вместо того, чтобы утверждать, что что-то изменено, проверьте, есть ли новая вещь .

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

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

let app = XCUIApplication() 
app.buttons["9"].tap() 
XCTAssert(app.staticTexts["42"].exists) 
+0

«' staticTexts'' ссылается на текст ярлыка или может ссылаться на текстовое значение кнопки? – breaktop

+0

'staticTexts' относится только к меткам, используйте' кнопки' для 'UIButton'. –

5

Я бы сказал, вы установили отчетливую 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)