deno test
Deno поставляется со встроенным средством запуска тестов, использующим API Deno.test(). О том, как писать тесты, см. руководство Основы тестирования. Об утверждениях см. @std/assert и @std/expect.
Запуск тестов
Запустите все тесты в текущем каталоге и его подкаталогах:
deno test
Запустите тесты в определённых файлах:
deno test src/fetch_test.ts src/signal_test.ts
Запустите тесты, соответствующие шаблону glob:
deno test src/*.test.ts
Пропустите проверку типов:
deno test --no-check
Фильтрация
Запустите только тесты, имена которых соответствуют строке или шаблону с --filter:
# Run tests whose name contains "database"
deno test --filter "database"
# Run tests whose name matches a regular expression
deno test --filter "/^connect.*/"
Чтобы интерпретировать значение фильтра как регулярное выражение, заключите его в прямые косые черты (/), как в синтаксисе литералов регулярных выражений JavaScript. Фильтрация не влияет на шаги теста: если имя теста соответствует фильтру, выполняются все его шаги.
Чтобы задать, какие файлы тестов собирать изначально, укажите test.include и test.exclude в файле конфигурации. См. раздел Включение и исключение.
Запуск затронутых тестов
При работе над изменением можно запускать только затронутые им тесты, а не весь набор. Это разовые запуски, а не режим наблюдения.
--changed запускает модули тестов, затронутые файлами, изменёнными в git. Если значение не указано, используется рабочее дерево (индексированные, неиндексированные и неотслеживаемые файлы); передайте ссылку, чтобы также включить коммиты после общего предка с этой ссылкой:
# Tests affected by uncommitted changes
deno test --changed
# Tests affected since branching off main
deno test --changed=origin/main
--related запускает модули тестов, зависящие от указанных исходных файлов, не обращаясь к git:
# Tests that import src/util.ts
deno test --related=src/util.ts
Оба флага отфильтровывают собранные файлы тестов, оставляя только те, которые связаны с изменёнными или указанными файлами через граф модулей. О процессе работы и принципе отбора см. раздел Запуск затронутых тестов в руководстве по тестированию.
Разрешения
Тесты запускаются с той же моделью разрешений, что и deno run. Предоставьте разрешения для набора тестов:
deno test --allow-read --allow-net
Режим наблюдения
Автоматически запускайте тесты повторно при изменении файлов:
deno test --watch
Параллельное выполнение
Запускайте файлы тестов в нескольких рабочих потоках:
deno test --parallel
По умолчанию --parallel использует число доступных процессоров. Используйте DENO_JOBS=<N>, чтобы задать число потоков:
DENO_JOBS=4 deno test --parallel
Покрытие кода
Соберите данные о покрытии и сформируйте отчёт:
deno test --coverage
Необработанные данные о покрытии записываются в каталог coverage/. Чтобы сформировать сводку на основе имеющихся данных о покрытии, используйте deno coverage:
deno coverage coverage/
Также можно сформировать отчёт lcov для использования с внешними инструментами:
deno coverage --lcov coverage/ > coverage.lcov
Чтобы завершать запуск с ошибкой, если покрытие опускается ниже заданного порога, укажите порог (например, deno coverage --threshold=90). Настройку порогов для отдельных метрик см. в разделе Пороговые значения покрытия.
Параметризованные тесты
Запускайте одно и то же тело теста для таблицы случаев с помощью Deno.test.each: для каждого случая регистрируется отдельный тест с независимым отчётом. О шаблонах имён и формах случаев см. раздел Параметризованные тесты.
Тестирование снимков
Сохраняйте значение и сравнивайте его с сохранённым эталоном при каждом запуске с помощью встроенного t.assertSnapshot, обновляя его с помощью --update-snapshots (-u). См. раздел Тестирование снимков.
Форматы отчётов
Выберите формат вывода с помощью --reporter. Доступны четыре встроенных формата:
-
pretty(по умолчанию): подробный вывод, удобный для чтения -
dot: один символ на тест — краткий обзор -
junit: формат JUnit XML для систем CI -
tap: вывод в формате Test Anything Protocol
deno test --reporter=dot
deno test --reporter=tap
Запишите отчёт JUnit XML в файл, сохранив человекочитаемый вывод pretty в терминале:
deno test --junit-path=report.xml
Случайный порядок
Перемешайте порядок запуска тестов, чтобы выявить скрытые зависимости между ними:
deno test --shuffle
Разделение на шарды
Разделите набор тестов между несколькими машинами с помощью --shard=<index>/<count>, где index начинается с 1. Обнаруженные файлы тестов сортируются для обеспечения стабильного порядка и делятся на <count> сбалансированных групп; запуск выполняется только для файлов из группы <index>:
# On machine 1 of 3
deno test --shard=1/3
# On machine 2 of 3
deno test --shard=2/3
Разделение на шарды выполняется до --shuffle, поэтому на каждой машине для данного шарда запускаются одни и те же файлы независимо от начального значения для перемешивания.
Повторные попытки и запуски
Задайте значения по умолчанию для числа повторных попыток и запусков всего набора с помощью --retry и --repeats:
# Re-run each failing test up to twice before reporting failure
deno test --retry=2
# Run every test three times and fail if any run fails
deno test --repeats=3
Если тест задаёт собственный параметр retry или repeats, он переопределяет флаг. О параметрах для отдельных тестов см. раздел Повторные попытки и запуски тестов.
Обнаружение утечек
Определите источник утекших асинхронных операций, таймеров или ресурсов:
deno test --trace-leaks
Тестирование кода в документации
Выполняйте блоки кода в файлах JSDoc и Markdown как тесты:
deno test --doc
Подробности см. в разделе Тесты документации.
deno test [OPTIONS] [files]... [-- [SCRIPT_ARG]...]Запускает тесты с помощью встроенного средства запуска тестов Deno.
Выполняет указанные модули, запускает все тесты, объявленные с помощью Deno.test(), и выводит результаты в стандартный поток вывода:
deno test src/fetch_test.ts src/signal_test.ts
Аргументы-каталоги раскрываются в список всех содержащихся в них файлов, соответствующих шаблону {*_,*.,}test.{js,mjs,ts,mts,jsx,tsx} или **/__tests__/**:
deno test src/
Параметры проверки типов
--check<CHECK_TYPE>необязательно
Задаёт поведение проверки типов. Эта подкоманда по умолчанию проверяет типы локальных модулей, поэтому передавать --check избыточно; передайте --check=all, чтобы также проверять типы удалённых модулей. Кроме того, можно использовать подкоманду 'deno check'.
--no-check<NO_CHECK_TYPE>необязательно
Пропускает проверку типов. Если указано значение "remote", диагностические ошибки удалённых модулей будут игнорироваться.
Параметры управления зависимостями
--cached-onlyТребует, чтобы удалённые зависимости уже находились в кэше.
--frozen<BOOLEAN>необязательно
Завершает работу с ошибкой, если файл блокировки устарел.
--import-map<FILE>
Загружает файл карты импортов из локального файла или удалённого URL-адреса.
--lock<FILE>необязательно
Проверяет указанный файл блокировки. (Если значение не указано, используется значение по умолчанию "./deno.lock".)
--no-lockОтключает автоматический поиск файла блокировки.
--no-npmНе разрешает модули npm.
--no-remoteНе разрешает удалённые модули.
--node-modules-dir<MODE>необязательно
Выбирает режим каталога node_modules для пакетов npm (не путь). Возможные значения: auto (создать локальный каталог node_modules и установить в него пакеты npm), manual (использовать существующий локальный каталог node_modules, не изменяя его), none (не использовать локальный каталог node_modules; разрешать пакеты npm из глобального кэша). Если флаг передан без значения, по умолчанию используется auto.
--node-modules-linker<MODE>
Задаёт режим компоновщика для пакетов npm (isolated или hoisted).
--reload, -r<CACHE_BLOCKLIST>необязательно
Перезагружает кэш исходного кода (повторно компилирует TypeScript). Если значение не указано, перезагружается всё. Передайте список спецификаторов, разделённых запятыми, чтобы перезагрузить только указанные модули; npm: перезагружает все модули npm; npm:chalk перезагружает один модуль npm; jsr:@std/http/file-server,jsr:@std/assert/assert-equals перезагружает указанные модули.
--vendor<vendor>необязательно
Включает или отключает использование локального каталога vendor для удалённых модулей и каталога node_modules для пакетов npm.
Параметры
--allow-scripts<PACKAGE>необязательно
Разрешает запуск скриптов жизненного цикла npm для указанных пакетов. Примечание: скрипты будут выполняться только при использовании каталога node_modules (--node-modules-dir).
--cert<FILE>
Загружает центр сертификации из файла в кодировке PEM.
--conditions<conditions>
Используйте этот аргумент, чтобы указать пользовательские условия для экспорта пакетов npm. Также можно использовать переменную окружения DENO_CONDITIONS. .
--config, -c<FILE>
Настраивает различные аспекты Deno, включая TypeScript, проверку кода и форматирование кода. Обычно файл конфигурации называется deno.json или deno.jsonc и обнаруживается автоматически; в таком случае этот флаг не требуется.
--env-file<FILE>необязательно
Загружает переменные окружения из локального файла. Используется только первая переменная окружения с заданным ключом. Существующие переменные окружения процесса не перезаписываются: если в окружении уже есть переменные с такими именами, их значения сохраняются. Если в файле .env несколько объявлений одной переменной окружения, применяется первое найденное. Порядок определяется последовательностью файлов, переданных в качестве аргументов.
--ext<ext>
Задаёт тип содержимого для указанного файла.
--hide-stacktracesСкрывает трассировки стека для ошибок в результатах неудачных тестов.
--ignore<ignore>
Игнорирует файлы.
--location<HREF>
Значение globalThis.location, используемое некоторыми веб-API.
--minimum-dependency-age<minimum-dependency-age>
(Нестабильный параметр) Возраст в минутах, длительность ISO-8601 или абсолютная временная метка RFC3339 (например, '120' — два часа, 'P2D' — два дня, '2025-09-16' — дата отсечения, '2025-09-16T12:00:00+00:00' — время отсечения, '0' — отключение).
--no-configОтключает автоматическую загрузку файла конфигурации.
--parallelЗапускает тестовые модули параллельно. По умолчанию степень параллелизма равна количеству доступных процессоров или значению переменной окружения DENO_JOBS.
--preload<FILE>
Список файлов, которые будут выполнены до основного модуля.
--require<FILE>
Список модулей CommonJS, которые будут выполнены до основного модуля.
--seed<NUMBER>
Задаёт начальное значение генератора случайных чисел.
--v8-flags<V8_FLAGS>необязательно
Чтобы просмотреть список всех доступных флагов, используйте --v8-flags=--help. Флаги также можно задать с помощью переменной окружения DENO_V8_FLAGS. Флаги, заданные этим параметром, добавляются после переменной окружения DENO_V8_FLAGS.
Параметры отладки
--inspect<HOST_PORT>необязательно
Включает инспектор на узле и порту: [по умолчанию: 127.0.0.1:9229]. Узел и порт указывать необязательно. При использовании порта 0 будет назначен случайный свободный порт.
--inspect-brk<HOST_PORT>необязательно
Включает инспектор на узле и порту, ожидает подключения отладчика и приостанавливает выполнение в начале пользовательского скрипта.
--inspect-wait<HOST_PORT>необязательно
Включает инспектор на узле и порту и ожидает подключения отладчика перед запуском пользовательского кода.
Параметры тестирования
--changed<REF>необязательно
Запускает только тестовые модули, на которые повлияли файлы, изменённые в git. Если значение не указано, используются незакоммиченные изменения (добавленные в индекс, неиндексированные и неотслеживаемые). Передайте ссылку git для сравнения, например --changed=main или --changed=HEAD~1.
--cleanОчищает каталог временных данных профиля покрытия перед запуском тестов. Примечание: последовательный или параллельный запуск нескольких вызовов deno test --clean`` для одного и того же каталога покрытия может привести к состояниям гонки.
--coverage<DIR>необязательно
Собирает данные профиля покрытия в DIR. Если DIR не указан, используется 'coverage/'. Этот параметр также можно задать с помощью переменной окружения DENO_COVERAGE_DIR.
--coverage-raw-data-onlyСобирает только необработанные данные о покрытии, не создавая отчёт.
--coverage-threshold<PERCENT>
Завершает работу с ошибкой, если покрытие ниже указанного процента (0–100). Требуется --coverage.
--docВыполняет блоки кода в JSDoc и Markdown.
--fail-fast<N>необязательно
Останавливается после N ошибок. По умолчанию выполнение прекращается после первой ошибки.
--filter<filter>
Запускает тесты, в имени которых есть эта строка или шаблон регулярного выражения.
--junit-path<PATH>
Записывает отчёт о тестировании в формате JUnit XML по пути PATH. Используйте '-' для вывода в stdout; это значение используется по умолчанию, если PATH не указан.
--no-runКэширует тестовые модули, но не запускает тесты.
--permit-no-filesНе возвращает код ошибки, если файлы не найдены.
--repeats<NUMBER>
Запускает каждый тест ещё NUMBER раз. Каждый повторный запуск должен завершиться успешно. Параметры repeats, заданные самими тестами, имеют приоритет.
--reporter<reporter>
Выбирает используемый формат отчёта. По умолчанию используется 'pretty'.
--retry<NUMBER>
Повторно запускает неудачные тесты до NUMBER раз. Тест считается пройденным, если успешна хотя бы одна попытка. Параметры retry, заданные самими тестами, имеют приоритет.
--sanitize-opsВключает санитайзер операций, который гарантирует завершение всех асинхронных операций, запущенных в тесте, до его окончания.
--sanitize-resourcesВключает санитайзер ресурсов, который гарантирует закрытие всех ресурсов, открытых в тесте, до его окончания.
--shard<INDEX/COUNT>
Запускает только тестовые файлы для фрагмента INDEX из COUNT, например --shard=2/3.. Найденные тестовые файлы сортируются и разбиваются на COUNT последовательных групп; нумерация INDEX начинается с 1. Это удобно для распределения запуска между несколькими компьютерами.
--shuffle<NUMBER>необязательно
Перемешивает порядок запуска тестов.
--trace-leaksВключает отслеживание утечек. Полезно при отладке операций с утечками в тестах, но увеличивает время их выполнения.
--update-snapshots, -uОбновляет снимки, созданные с помощью t.assertSnapshot(), вместо завершения с ошибкой при несовпадении.
Параметры отслеживания файлов
--no-clear-screenНе очищает экран терминала в режиме отслеживания.
--watch<FILES>необязательно
Отслеживает изменения файлов и автоматически перезапускает процесс. По умолчанию отслеживаются локальные файлы из графа модулей точки входа. Дополнительные пути можно отслеживать, передав их в качестве аргументов этому флагу.
--watch-exclude<FILES>необязательно
Исключает указанные файлы и шаблоны из режима отслеживания.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/cli/test