Извиняются ли XCTest в основном потоке и как? - PullRequest
0 голосов
/ 13 января 2020

Я пишу приложение iOS с поддержкой Core Data. Сначала я пишу код Core Data и тестирую их непосредственно в методах AppDelegate. Получив исходный рабочий код, я решил переместить тестовый код Core Data в XCTest. Это первый раз, когда я использую XCTest, и я подумал, что тесты выполнялись в отдельном процессе, чем приложение iOS, но, очевидно, это не так. Например, тест может получить доступ к контексту управляемого объекта, установленному приложением.

Итак, мой вопрос в каком потоке запускается XCTest? Это основной поток? Мои эксперименты, кажется, указывают на это. Например, тестовые объекты доступа, созданные в основном потоке (например, экземпляр AppDelegate) и Xcode, не жалуются на это. Если да, то мне интересно, кто запланировал проведение теста в основном потоке и как?

Я вижу в консоли журналы, подобные приведенным ниже, но они не указывают основные детали.

2020-01-13 11:34:38.212244+0800 ... Launching with XCTest injected. Preparing to run tests.
2020-01-13 11:34:38.559808+0800 ... Waiting to run tests until the app finishes launching.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 января 2020

Я думал, что тесты выполнялись в отдельном процессе, чем приложение iOS, но, похоже, это не так. Например, тест может получить доступ к контексту управляемого объекта, установленному приложением.

Тесты находятся в пакете, внедренном в приложение. Тесты, в свою очередь, видят приложение как пакет; именно поэтому вы импортируете приложение в тесты. (Это отличается от UITests, где приложение запускается в отдельной среде запуска приложения.)

Так что мой вопрос в том, в каком потоке запускается XCTest? Это основной поток? Мои эксперименты, кажется, указывают на это. Например, тестовые объекты доступа, созданные в основном потоке (например, экземпляр AppDelegate) и Xcode, не жалуются на это. Если это так, мне интересно, кто запланировал запуск теста в основном потоке и как?

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

...