# Сгенерированные проекты {#generated-projects}

> [!WARNING]
> **Реквизиты**
>
> - Проект, созданный
>   <LocalizedLink href="/guides/features/projects"></LocalizedLink>
> - A <LocalizedLink href="/guides/server/accounts-and-projects">Туистский счет и проект</LocalizedLink>


Чтобы выборочно запустить тесты в сгенерированном проекте, используйте команду
`tuist test`. Команда
<LocalizedLink href="/guides/features/projects/hashing">хеширует</LocalizedLink>
ваш проект Xcode так же, как это делается для
<LocalizedLink href="/guides/features/cache#cache-warming">прогрева кэша</LocalizedLink>, и в случае успеха сохраняет хеши, чтобы определить, что
изменилось в последующих запусках.

В последующих запусках `tuist test` прозрачно использует хэши для фильтрации
тестов, чтобы запускать только те, которые изменились с момента последнего
успешного запуска теста.

Например, предположим следующий граф зависимостей:

- `FeatureA` имеет тесты `FeatureATests`, и зависит от `Core`
- `FeatureB` имеет тесты `FeatureBTests`, и зависит от `Core`
- `Ядро` имеет тесты `CoreTests`

`туистский тест` будет вести себя именно так:

| Действие               | Описание                                                                     | Внутреннее состояние                                                  |
| ---------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `туистский тест` вызов | Запускает тесты из разделов `CoreTests`, `FeatureATests`, и `FeatureBTests.` | Хэши `FeatureATests`, `FeatureBTests` и `CoreTests` сохраняются.      |
| `ФункцияА` обновляется | Разработчик изменяет код целевой программы                                   | Как и раньше                                                          |
| `туистский тест` вызов | Запускает тесты в `FeatureATests`, потому что хэш изменился.                 | Новый хэш `FeatureATests` сохраняется.                                |
| `Обновлено ядро`       | Разработчик изменяет код целевой программы                                   | Как и раньше                                                          |
| `туистский тест` вызов | Запускает тесты из разделов `CoreTests`, `FeatureATests`, и `FeatureBTests.` | Новый хэш `FeatureATests` `FeatureBTests`, и `CoreTests` сохраняется. |

`tuist test` напрямую интегрируется с кэшированием бинарных файлов, чтобы
использовать как можно больше бинарных файлов из локального или удаленного
хранилища для улучшения времени сборки при выполнении набора тестов. Сочетание
выборочного тестирования с кэшированием бинарных файлов позволяет значительно
сократить время выполнения тестов в CI.

## Тесты пользовательского интерфейса {#ui-tests}

Tuist поддерживает выборочное тестирование UI-тестов. Однако Tuist необходимо
заранее знать место назначения. Только если вы укажете параметр `destination`,
Tuist будет запускать тесты пользовательского интерфейса выборочно, например:
```sh
tuist test --device 'iPhone 14 Pro'
# or
tuist test -- -destination 'name=iPhone 14 Pro'
# or
tuist test -- -destination 'id=SIMULATOR_ID'
```
