Тестирование пользовательского интерфейса XCode: выполнение теста условно
Используя Xcode UI Testing, я хочу реализовать код, который запускается, если в приложении присутствует определенный элемент UI. Мое приложение находится в состоянии входа в систему, и я хочу выйти из системы, если пользователи в данный момент вошли в систему. Мне не удалось найти документацию, в которой предлагался бы выход из этого бумажного пакета.
Все, что я прочитал, показывает два возможных пути: использование XCTAssert
(что может привести к тому, что мой тест сразу завершится неудачей, если элемент отсутствует) и использует XCTExpectation
(что привело бы к истечению времени ожидания моего теста, если бы элемента не было). Мне нужен более простой способ запуска другого кода, если приложение находится в заданном состоянии.
Чтобы поместить это в код, я ищу что-то вроде этого:
if let signOutElement = app.collectionViews.staticTexts["Sign Out"] {
signOutElement.tap()
}
Увы, это не работает.
1 ответ
Нет ничего плохого в использовании условного выражения во время тестирования. Проблема с вашим кодом в том, что это глупость с точки зрения Swift; if let
здесь не имеет смысла, так как ваше выражение не возвращает необязательный. В конце концов, вам все еще нужно поговорить о легальном Свифте.
Почему бы не попробовать что-то подобное?
if app.collectionViews.staticTexts["Sign Out"].exists