Я хочу использовать Fastlane Snapshot для создания снимков экрана для своего приложения. Но поведение приложения при первом запуске и при запуске после него другое. Как мне добиться согласованного поведения при захвате скриншотов? (этот вопрос также актуален для любого теста пользовательского интерфейса, который, как я полагаю, желаемой согласованности)
Отличительные особенности первого запуска при тестировании пользовательского интерфейса
Ответы (1)
Вы должны использовать класс UserDefaults
для сохранения данных в вашем приложении, чтобы вы могли вставить данные в свои тесты.
Если мы предположим, что ключ Bool, который вы используете для проверки первого запуска, - это isFirstTime
, чтобы заглушить его в тесте пользовательского интерфейса, вы должны передать его launchArguments
после значения YES
или NO
(для значений Bool). Обратите внимание, что я добавил знак -
перед ключом, вот как это работает:
class FirstTimeLaunchTest: XCTestCase {
let app = XCUIApplication()
override func setUp() {
super.setUp()
continueAfterFailure = false
app.launchArguments += ["-isFirstTime", "YES"]
app.launch()
}
func testWelcomeScreenShown() {
XCTAssert(app.navigationBars["Welcome"].exists)
}
}
Для тестов, в которых вы хотели бы пропустить первый запуск, используйте этот класс:
class LaterLaunchesTest: XCTestCase {
let app = XCUIApplication()
override func setUp() {
super.setUp()
continueAfterFailure = false
app.launchArguments += ["-isFirstTime", "NO"]
app.launch()
}
func testMainAppScreenShown() {
XCTAssert(app.navigationBars["My App"].exists)
}
}
Одно примечание: если вы используете библиотеку SwiftyUserDefaults, это решение не будет ' т работать. В текущей версии библиотеки есть проблема, из-за которой преобразование строк YES
и NO
в true
и false
не работает должным образом. Существовал PR, который решил эту проблему (которая отклонена), но для решения этой проблемы проблемы, вы можете посмотреть решения №2 и №3 в этом ответе.
UserDefaults
. Добавление launchArguments
в приложение - это способ UserDefaults
заглушить данные в тестах пользовательского интерфейса.
- person lagoman; 06.12.2017