Почему я должен использовать отдельный тестовый узел для запуска XCTests и как мне это сделать?

Я однажды задал вопрос, связанный с XCTests. И в одном из ответов мне сказали, что обычной практикой является использование отдельного тестового хоста (кроме основного приложения) при выполнении модульных тестов (по крайней мере, в разработке iOS). Я попытался найти некоторые источники об этом, но я не мог

Я понимаю, что это, вероятно, лучшая практика, поэтому я бы очень хотел ее понять. Может ли кто-нибудь объяснить мне, почему это важно, какие выгоды я получаю от него и как мне это делать? Ссылки на некоторые статьи, объясняющие эту проблему, будут высоко оценены.

P.S. Я понимаю, что мне нужна специальная среда для тестов (фальшивая база данных в памяти, имитированный сетевой уровень и т.д.), Но до сих пор мне удалось достичь этого без отдельного тестового хоста, используя только мое основное приложение, например Xcode. по умолчанию. Но я считаю, что может быть лучший способ. И я знаю, что значения по умолчанию, которые предлагает Xcode, не всегда так велики.

Ответ 1

Причины использования другого хост-приложения для модульных тестов:

  • Нет основного приложения, потому что ваша цель - это библиотека.
  • Когда основное приложение запущено, оно проходит процесс запуска. Это занимает слишком много времени.

Причина 1 в значительной степени задана. Но как насчет разума 2?

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