Вы не можете вручную инициализировать UIViewController
(или любой другой класс UIKit
) в вашем XCTestCase
классе и запускать на нем UITests.
Ваш тестовый код UITest выполняется как отдельный процесс, синтезируя событияна который отвечает пользовательский интерфейс в вашем приложении.Другими словами, код, который вы пишете в ваших UITests, запускается в приложении Test Runner, которое взаимодействует с приложением, которое вы тестируете.Приложение Test Runner может взаимодействовать только с элементами пользовательского интерфейса основного приложения.Он не может получить доступ к коду основного приложения или просмотреть иерархию напрямую.Поэтому вы не можете добавить UIViewController
во время теста.
Как вы уже упоминали в своем вопросе, вы можете добавить еще одну цель, которая показывает только тот View Controller, который вы хотите протестировать.Но это звучит не очень практично для меня.
Или (как вы также упомянули) вы можете установить XUIApplication().launchArguments
в вашем UITest и представить ViewController непосредственно при запуске приложения, когда заданы аргументы запуска.