2016-07-13 3 views
0

Использование Xcode UI Testing, я хочу реализовать код, который выполняется, если конкретный элемент пользовательского интерфейса присутствует в приложении. Мое приложение имеет зарегистрированное состояние, и я хочу зарегистрировать пользователя, если он в настоящее время вошел в систему. Мне не удалось найти документацию, чтобы предложить выход из этого бумажного пакета.Xcode UI Testing: Выполнение теста условно

Все, что я прочитал, показывает два возможных пути: используя XCTAssert (что может привести к сбою моего теста немедленно, если элемент не присутствовал) и с использованием XCTExpectation (что вызовет мой тест, если элемент weren ' т). Мне нужен более простой способ запускать другой код, если приложение находится в определенном состоянии.

Чтобы поместить его в код, я искал что-то вроде этого:

if let signOutElement = app.collectionViews.staticTexts["Sign Out"] { 
    signOutElement.tap() 
} 

Увы, это не работает.

+1

В моем опыте тестирование обычно выполняется с довольно жестким состоянием - вы помещаете приложение в состояние, которое хотите, чтобы вы могли проверить определенные части кода. Поэтому в этом случае вы должны ЗНАТЬ, что пользователь находится в состоянии входа в систему и, следовательно, должен быть выведен из системы. Вы могли бы теоретически достичь этого с помощью какого-то таймера на странице, которая срабатывает каждый так часто и ищет вывеску, но опять же не то, что вы обязательно должны сделать с помощью теста imo. –

ответ

5

Нет ничего плохого в использовании условного кода во время тестирования. Проблема с вашим кодом заключается в том, что это абсурд с точки зрения Swift; if let здесь не имеет смысла, так как ваше выражение не возвращает необязательный. В конце концов, вы все равно должны поговорить с юридическим Свифт.

Почему бы не попробовать что-нибудь подобное?

if app.collectionViews.staticTexts["Sign Out"].exists 
+0

Я также понял, что существует метод существует на XCUIElement. Спасибо за ответ! –

+0

Не принимайте мой ответ, если он не прав! Я не уверен, что 'count' будет работать здесь. Исправьте мой код, чтобы он работал, пожалуйста !!!! – matt

+0

Yikes, если вы чувствуете, что сильно об этом! –

Смежные вопросы