Перейти к содержимому

Аналитика тестов Rust

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

Requirements

Отчетность о запусках тестов#

bash
tuist cargo test --workspace

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

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

bash
tuist cargo test -p store
tuist cargo test authentication

Что отслеживает Tuist#

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

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

Пакеты, модули и тестовые случаи#

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

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

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

Документационные тесты и длительность#

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

bash
tuist cargo test --doc

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

Ограничения отчетности#

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

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

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

Надежность и выборка#

Используйте обнаружение нестабильных тестов и их изоляцию, чтобы исследовать нестабильные тесты и отключить уведомления об их сбоях или пропустить их. Распараллеливание тестов распределяет целые цели Cargo между работниками CI. Сбор покрытия, выбор тестов на основе покрытия и распределение с однократной сборкой недоступны для обычных запусков тестов Cargo.

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

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

bash
TUIST_DEBUG=1 tuist cargo test --workspace