Возможно ли прямое, но изолированное тестирование пользовательского интерфейса контроллера представления в Xcode Simulator? - PullRequest
0 голосов
/ 29 ноября 2018

Можно ли запускать тесты пользовательского интерфейса с помощью Xcode Simulator, например, вручную запуская контроллер представления из XCTestCase?Я знаком с настройкой среды для теста через NSProcessInfo (или ProcessInfo) в Swift, но у меня есть определенный случай, когда действительно было бы проще просто показать один контроллер представления и выполнить серию жестовна нем ... вместо того, чтобы переходить к нему при определенных условиях.

Хотя я мог создать для этого еще одну цель, а затем провести тестирование пользовательского интерфейса, мне было интересно, есть ли более простой подход.

1 Ответ

0 голосов
/ 10 декабря 2018

Вы не можете вручную инициализировать UIViewController (или любой другой класс UIKit) в вашем XCTestCase классе и запускать на нем UITests.

Ваш тестовый код UITest выполняется как отдельный процесс, синтезируя событияна который отвечает пользовательский интерфейс в вашем приложении.Другими словами, код, который вы пишете в ваших UITests, запускается в приложении Test Runner, которое взаимодействует с приложением, которое вы тестируете.Приложение Test Runner может взаимодействовать только с элементами пользовательского интерфейса основного приложения.Он не может получить доступ к коду основного приложения или просмотреть иерархию напрямую.Поэтому вы не можете добавить UIViewController во время теста.

Как вы уже упоминали в своем вопросе, вы можете добавить еще одну цель, которая показывает только тот View Controller, который вы хотите протестировать.Но это звучит не очень практично для меня.

Или (как вы также упомянули) вы можете установить XUIApplication().launchArguments в вашем UITest и представить ViewController непосредственно при запуске приложения, когда заданы аргументы запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...