Тестирование пользовательского интерфейса 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
Другие вопросы по тегам