# Аналитика тестов Rust {#rust-test-insights}

Tuist отчитывается об отдельных результатах тестов из `cargo test`, включая модульные тесты, интеграционные тесты и документационные тесты. Зависимости Rust или дополнительный тестовый раннер не требуются.

> [!IMPORTANT] Requirements
> - Следуйте <.localized_link href="/guides/get-started/rust-project">настройке проекта Rust</.localized_link>.

## Отчетность о запусках тестов {#report-your-test-runs}

```sh
tuist cargo test --workspace
```

При настроенной обертке mise для Cargo вы можете продолжать вводить `cargo test`. Cargo по-прежнему компилирует и запускает ваши тесты со своими обычными аргументами, выводом и кодом выхода. Ошибки отчетности не влияют на результат ваших тестов.

Вы можете выбрать пакет или отфильтровать тесты как обычно:

```sh
tuist cargo test -p store
tuist cargo test authentication
```

## Что отслеживает Tuist {#what-is-tracked}

- Пройденные, проваленные и проигнорированные тесты из завершенных наборов тестов.
- Модульные тесты, интеграционные тесты и документационные тесты.
- Длительность всего набора тестов.
- Доступные метаданные ветки, коммита, CI и раннера.

Отфильтрованные тесты и тесты, не выполненные после сбоя, никогда не отмечаются как пройденные. Результаты отображаются в разделе **Тесты** панели управления.

## Пакеты, модули и тестовые случаи {#test-hierarchy}

Tuist группирует результаты по пакетам и целям Cargo. Пути модулей Rust группируют отдельные тесты внутри цели:

| Метка в панели управления | Значение в Rust | Пример |
| --- | --- | --- |
| Модули | Пакет и цель Cargo | `store::api` |
| Наборы тестов | Пути модулей Rust | `api::authentication` |
| Тестовые случаи | Отдельные тесты | `rejects_invalid_token` |

Документационные тесты используют отдельный модуль, например `store::doctest/store`. Их имена включают расположение в исходном коде, поэтому перемещение примера может изменить его идентификатор.

## Документационные тесты и длительность {#cargo-test}

Документационные тесты запускаются с вашей обычной командой тестирования, включая примеры `compile_fail`, `should_panic` и `no_run`. Чтобы запустить только документационные тесты:

```sh
tuist cargo test --doc
```

Стабильная libtest сообщает время всего набора, но не длительность отдельных тестов. Недоступные данные о времени исключаются из истории длительности по случаям и аналитики длительности, при этом результаты тестов по-прежнему учитываются в показателях надежности и количества запусков.

## Ограничения отчетности {#reporting-limits}

Отдельные результаты собираются из стандартного вывода Cargo/libtest. Команды, использующие `--no-run`, `--list`, тихий или подробный вывод Cargo, альтернативные форматы или неперехваченный вывод тестов, выполняются нормально без отчетности по отдельным тестам. Пользовательские harness, неполные сводки, неоднозначное определение цели и отчеты чрезмерного размера не загружаются.

Если пакеты рабочего пространства имеют интеграционные цели с одинаковыми именами, выберите одну из них с помощью `-p <package>`. Отчетность поддерживает точные имена пакетов рабочего пространства; пакеты зависимостей, селекторы с указанием версии и шаблоны выполняются нормально, но не отчитываются. Абсолютные пути документационных тестов опускаются, чтобы пути 체크아웃 не попадали в идентификаторы тестов.

Tuist передает вывод потоком во время сбора результатов. Это может повлиять на автоматическое определение цвета. Фоновые процессы, которые держат каналы вывода открытыми после завершения Cargo, могут привести к тому, что отчет будет опущен, но не изменят код выхода Cargo.

## Надежность и выборка {#reliability-and-selection}

Используйте <.localized_link href="/guides/features/test-insights/flaky-tests/rust">обнаружение нестабильных тестов и их изоляцию</.localized_link>, чтобы исследовать нестабильные тесты и отключить уведомления об их сбоях или пропустить их. <.localized_link href="/guides/features/test-sharding/rust">Распараллеливание тестов</.localized_link> распределяет целые цели Cargo между работниками CI. Сбор покрытия, выбор тестов на основе покрытия и распределение с однократной сборкой недоступны для обычных запусков тестов Cargo.

## Устранение неполадок {#troubleshooting}

Если запуск теста не отображается в панели управления, включите отладочный вывод, чтобы увидеть, почему его отчет не был отправлен:

```sh
TUIST_DEBUG=1 tuist cargo test --workspace
```
