Аналитика тестов Rust
Tuist отчитывается об отдельных результатах тестов из cargo test, включая модульные тесты, интеграционные тесты и документационные тесты. Зависимости Rust или дополнительный тестовый раннер не требуются.
- Следуйте настройке проекта Rust.
Отчетность о запусках тестов#
tuist cargo test --workspace
При настроенной обертке mise для Cargo вы можете продолжать вводить cargo test. Cargo по-прежнему компилирует и запускает ваши тесты со своими обычными аргументами, выводом и кодом выхода. Ошибки отчетности не влияют на результат ваших тестов.
Вы можете выбрать пакет или отфильтровать тесты как обычно:
tuist cargo test -p store
tuist cargo test authentication
Что отслеживает Tuist#
- Пройденные, проваленные и проигнорированные тесты из завершенных наборов тестов.
- Модульные тесты, интеграционные тесты и документационные тесты.
- Длительность всего набора тестов.
- Доступные метаданные ветки, коммита, CI и раннера.
Отфильтрованные тесты и тесты, не выполненные после сбоя, никогда не отмечаются как пройденные. Результаты отображаются в разделе Тесты панели управления.
Пакеты, модули и тестовые случаи#
Tuist группирует результаты по пакетам и целям Cargo. Пути модулей Rust группируют отдельные тесты внутри цели:
| Метка в панели управления | Значение в Rust | Пример |
|---|---|---|
| Модули | Пакет и цель Cargo | store::api |
| Наборы тестов | Пути модулей Rust | api::authentication |
| Тестовые случаи | Отдельные тесты | rejects_invalid_token |
Документационные тесты используют отдельный модуль, например store::doctest/store. Их имена включают расположение в исходном коде, поэтому перемещение примера может изменить его идентификатор.
Документационные тесты и длительность#
Документационные тесты запускаются с вашей обычной командой тестирования, включая примеры compile_fail, should_panic и no_run. Чтобы запустить только документационные тесты:
tuist cargo test --doc
Стабильная libtest сообщает время всего набора, но не длительность отдельных тестов. Недоступные данные о времени исключаются из истории длительности по случаям и аналитики длительности, при этом результаты тестов по-прежнему учитываются в показателях надежности и количества запусков.
Ограничения отчетности#
Отдельные результаты собираются из стандартного вывода Cargo/libtest. Команды, использующие --no-run, --list, тихий или подробный вывод Cargo, альтернативные форматы или неперехваченный вывод тестов, выполняются нормально без отчетности по отдельным тестам. Пользовательские harness, неполные сводки, неоднозначное определение цели и отчеты чрезмерного размера не загружаются.
Если пакеты рабочего пространства имеют интеграционные цели с одинаковыми именами, выберите одну из них с помощью -p <package>. Отчетность поддерживает точные имена пакетов рабочего пространства; пакеты зависимостей, селекторы с указанием версии и шаблоны выполняются нормально, но не отчитываются. Абсолютные пути документационных тестов опускаются, чтобы пути 체크아웃 не попадали в идентификаторы тестов.
Tuist передает вывод потоком во время сбора результатов. Это может повлиять на автоматическое определение цвета. Фоновые процессы, которые держат каналы вывода открытыми после завершения Cargo, могут привести к тому, что отчет будет опущен, но не изменят код выхода Cargo.
Надежность и выборка#
Используйте обнаружение нестабильных тестов и их изоляцию, чтобы исследовать нестабильные тесты и отключить уведомления об их сбоях или пропустить их. Распараллеливание тестов распределяет целые цели Cargo между работниками CI. Сбор покрытия, выбор тестов на основе покрытия и распределение с однократной сборкой недоступны для обычных запусков тестов Cargo.
Устранение неполадок#
Если запуск теста не отображается в панели управления, включите отладочный вывод, чтобы увидеть, почему его отчет не был отправлен:
TUIST_DEBUG=1 tuist cargo test --workspace