Как начать с пустых основных данных для каждого утверждения теста пользовательского интерфейса в Swift?

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

Я надеялся, что перед каждым тестовым случаем основные данные будут очищены, что заставит каждый тестовый пример запускаться на новом экземпляре приложения. Тестовые случаи не должны зависеть от состояния какого-либо тестового устройства, особенно потому, что другие тестовые случаи манипулируют этим состоянием. К сожалению, по умолчанию основные данные задерживаются не только между тестовыми примерами, но и между совершенно отдельными тестовыми запусками. Я пытаюсь исправить это поведение.

Моей первой идеей было сбросить все основные данные в функцию разборки. Таким образом, каждый тест будет убирать за собой. К сожалению, я не могу получить NSManagedObjectContext с помощью этой команды:

let context = (UIApplication.sharedApplication().delegate as! MyApp.AppDelegate).managedObjectContext!

Потому что у него есть эта ошибка компилятора:

  Undefined symbols for architecture x86_64: "type metadata accessor for MyApp.AppDelegate", referenced from: MyAppUITests.MyAppUITests.tearDown

Чтобы исправить эту ошибку, я попытался как добавить UITests в целевое членство AppDelegate, так и выполнить @testable import MyApp. Ни один из них не работал. Мне нужно, чтобы manageObjectContext очищал основные данные.

Теперь я думаю, что должен быть лучший встроенный способ выгрузки всех основных данных в начале или в конце каждого запуска тестового примера. Желательно в конце, так как каждый тест должен убирать за собой. Кто-нибудь знает, как это можно сделать?

Заранее спасибо!


person Noah    schedule 03.08.2015    source источник


Ответы (1)


Вы можете сделать это легко, используя XCUIApplication().launchEnvironment = ["key":"val"]

и проверяя, используете ли вы AppDelegate и анализируете NSProcessInfo.

Я борюсь за получение информации из приложения для проверки / отправки инструкции не только во время запуска.

person Duncan Dean Scholtz    schedule 20.08.2015