Skip to content
Vitest 3
Main Navigation Руководство & APIКонфигурацияРежим браузераРасширенный API
3.2.0
2.1.9
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Введение

Почему Vitest

Начало работы

Возможности

Настройка Vitest

API

Справочник по API тестирования

Мок-функции

Vi

expect

expectTypeOf

assert

assertType

Руководство

Интерфейс командной строки

Фильтрация тестов

Тестовые проекты

Средства отчётности

Покрытие кода

Снапшот-тестирование

Мокирование

Параллелизм

Тестирование типов

Vitest UI

Тестирование в исходном коде

Контекст теста

Аннотации тестов

Среда тестирования

Расширение матчеров

Интеграции с IDE

Отладка

Распространенные ошибки

Руководство по миграции

Миграция на Vitest 3.0

Миграция с Jest

Производительность

Профилирование производительности тестов

Улучшение производительности

Режим браузера

Расширенный API

Сравнение с другими тестовыми раннерами

Содержание страницы

Средства отчётности ​

Vitest предоставляет несколько встроенных средств отчётности для отображения результатов тестов в различных форматах, а также возможность использования пользовательских генераторов отчётов. Вы можете выбрать различные средства отчётности, используя опцию командной строки --reporter или включив свойство reporters в ваш файл конфигурации. Если средство отчётности не указано, Vitest будет использовать средство отчётности default, как описано ниже.

Использование средств отчётности через командную строку:

bash
npx vitest --reporter=verbose

Использование средств отчётности через vitest.config.ts:

ts
import { defineConfig } from 'vitest/config';

export default defineConfig({
  test: {
    reporters: ['verbose'],
  },
});

Некоторые средства отчётности можно настроить, передав им дополнительные опции. Опции, специфичные для средств отчётности, описаны в разделах ниже.

ts
export default defineConfig({
  test: {
    reporters: ['default', ['junit', { suiteName: 'UI tests' }]],
  },
});

Вывод средств отчётности ​

По умолчанию средства отчётности Vitest выводят свои результаты в терминал. При использовании средств отчётности json, html или junit вы можете вместо этого записывать вывод ваших тестов в файл, включив опцию конфигурации outputFile либо в файл конфигурации Vite, либо через CLI.

bash
npx vitest --reporter=json --outputFile=./test-output.json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
    outputFile: './test-output.json',
  },
});

Комбинирование средств отчётности ​

Вы можете использовать несколько средств отчётности одновременно для вывода результатов тестов в различных форматах. Например:

bash
npx vitest --reporter=json --reporter=default
ts
export default defineConfig({
  test: {
    reporters: ['json', 'default'],
    outputFile: './test-output.json',
  },
});

Приведенный выше пример будет выводить результаты тестов в терминал в стандартном стиле и одновременно записывать их в формате JSON в указанный выходной файл.

При использовании нескольких средств отчётности также возможно указать несколько выходных файлов, как показано ниже:

ts
export default defineConfig({
  test: {
    reporters: ['junit', 'json', 'verbose'],
    outputFile: {
      junit: './junit-report.xml',
      json: './json-report.json',
    },
  },
});

Этот пример запишет отдельные отчеты JSON и XML и выведет подробный отчет в терминал.

Встроенные средства отчётности ​

Средство отчётности по умолчанию ​

По умолчанию (если средство отчётности не указано) Vitest будет отображать сводку запущенных тестов и их статус внизу. Когда набор тестов пройдет, его статус будет отображен в верхней части сводки.

Вы можете отключить сводку, настроив средство отчётности:

ts
export default defineConfig({
  test: {
    reporters: [['default', { summary: false }]],
  },
});

Пример вывода для тестов в процессе выполнения:

bash
 ✓ test/example-1.test.ts (5 tests | 1 skipped) 306ms
 ✓ test/example-2.test.ts (5 tests | 1 skipped) 307ms

 ❯ test/example-3.test.ts 3/5
 ❯ test/example-4.test.ts 1/5

 Test Files 2 passed (4)
      Tests 10 passed | 3 skipped (65)
   Start at 11:01:36
   Duration 2.00s

Окончательный вывод после завершения тестов:

bash
 ✓ test/example-1.test.ts (5 tests | 1 skipped) 306ms
 ✓ test/example-2.test.ts (5 tests | 1 skipped) 307ms
 ✓ test/example-3.test.ts (5 tests | 1 skipped) 307ms
 ✓ test/example-4.test.ts (5 tests | 1 skipped) 307ms

 Test Files  4 passed (4)
      Tests  16 passed | 4 skipped (20)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Базовое средство отчётности ​

Средство отчётности basic аналогично средству отчётности default, но без summary.

bash
npx vitest --reporter=basic
ts
export default defineConfig({
  test: {
    reporters: ['basic'],
  },
});

Пример вывода для базового средства отчётности:

bash
✓ __tests__/file1.test.ts (2) 725ms
✓ __tests__/file2.test.ts (2) 746ms

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Подробное средство отчётности ​

Подробное средство отчётности аналогично средству отчётности default, но также отображает каждый отдельный тест после завершения набора тестов. Оно также отображает текущие запущенные тесты, превышающие slowTestThreshold. Подобно средству отчётности default, вы можете отключить сводку, настроив средство отчётности.

bash
npx vitest --reporter=verbose
ts
export default defineConfig({
  test: {
    reporters: [['verbose', { summary: false }]],
  },
});

Пример вывода для выполняющихся тестов с slowTestThreshold: 300 по умолчанию:

bash
 ✓ __tests__/example-1.test.ts (2) 725ms
   ✓ first test file (2) 725ms
     ✓ 2 + 2 should equal 4
     ✓ 4 - 2 should equal 2

 ❯ test/example-2.test.ts 3/5
   ↳ should run longer than three seconds 1.57s
 ❯ test/example-3.test.ts 1/5

 Test Files 2 passed (4)
      Tests 10 passed | 3 skipped (65)
   Start at 11:01:36
   Duration 2.00s

Пример окончательного вывода для успешно пройденного набора тестов:

bash
✓ __tests__/file1.test.ts (2) 725ms
   ✓ first test file (2) 725ms
     ✓ 2 + 2 should equal 4
     ✓ 4 - 2 should equal 2
✓ __tests__/file2.test.ts (2) 746ms
  ✓ second test file (2) 746ms
    ✓ 1 + 1 should equal 2
    ✓ 2 - 1 should equal 1

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

Точечное средство отчётности ​

Выводит одну точку для каждого завершенного теста, обеспечивая минимальный вывод и показывая все выполненные тесты. Подробности предоставляются только для неудачных тестов, наряду со сводкой средства отчётности basic для набора тестов.

bash
npx vitest --reporter=dot
ts
export default defineConfig({
  test: {
    reporters: ['dot'],
  },
});

Пример вывода для успешно пройденного набора тестов:

bash
....

 Test Files  2 passed (2)
      Tests  4 passed (4)
   Start at  12:34:32
   Duration  1.26s (transform 35ms, setup 1ms, collect 90ms, tests 1.47s, environment 0ms, prepare 267ms)

JUnit Средство отчётности ​

Генерирует отчёт о результатах тестов в формате JUnit XML. Результаты могут быть выведены в терминал или записаны в XML-файл с помощью опции outputFile.

bash
npx vitest --reporter=junit
ts
export default defineConfig({
  test: {
    reporters: ['junit'],
  },
});

Пример отчета JUnit XML:

xml
<?xml version="1.0" encoding="UTF-8" ?>
<testsuites name="vitest tests" tests="2" failures="1" errors="0" time="0.503">
    <testsuite name="__tests__/test-file-1.test.ts" timestamp="2023-10-19T17:41:58.580Z" hostname="My-Computer.local" tests="2" failures="1" errors="0" skipped="0" time="0.013">
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 2 + 2 should equal 4" time="0.01">
            <failure message="expected 5 to be 4 // Object.is equality" type="AssertionError">
AssertionError: expected 5 to be 4 // Object.is equality
 ❯ __tests__/test-file-1.test.ts:20:28
            </failure>
        </testcase>
        <testcase classname="__tests__/test-file-1.test.ts" name="first test file &gt; 4 - 2 should equal 2" time="0">
        </testcase>
    </testsuite>
</testsuites>

Сгенерированный XML содержит вложенные теги testsuites и testcase. Их также можно настроить с помощью опций средства отчётности suiteName и classnameTemplate. classnameTemplate может быть либо строкой шаблона, либо функцией.

Поддерживаемые заполнители для опции classnameTemplate:

  • filename
  • filepath
ts
export default defineConfig({
  test: {
    reporters: [
      [
        'junit',
        {
          suiteName: 'custom suite name',
          classnameTemplate: 'filename:{filename} - filepath:{filepath}',
        },
      ],
    ],
  },
});

JSON Средство отчётности ​

Генерирует результаты тестов в формате JSON, совместимом с опцией --json Jest. Результаты могут быть выведены в терминал или записаны в файл с помощью опции outputFile.

bash
npx vitest --reporter=json
ts
export default defineConfig({
  test: {
    reporters: ['json'],
  },
});

Пример отчета JSON:

json
{
  "numTotalTestSuites": 4,
  "numPassedTestSuites": 2,
  "numFailedTestSuites": 1,
  "numPendingTestSuites": 1,
  "numTotalTests": 4,
  "numPassedTests": 1,
  "numFailedTests": 1,
  "numPendingTests": 1,
  "numTodoTests": 1,
  "startTime": 1697737019307,
  "success": false,
  "testResults": [
    {
      "assertionResults": [
        {
          "ancestorTitles": ["", "first test file"],
          "fullName": " first test file 2 + 2 should equal 4",
          "status": "failed",
          "title": "2 + 2 should equal 4",
          "duration": 9,
          "failureMessages": ["expected 5 to be 4 // Object.is equality"],
          "location": {
            "line": 20,
            "column": 28
          },
          "meta": {}
        }
      ],
      "startTime": 1697737019787,
      "endTime": 1697737019797,
      "status": "failed",
      "message": "",
      "name": "/root-directory/__tests__/test-file-1.test.ts"
    }
  ],
  "coverageMap": {}
}

INFO

Начиная с Vitest 3, JSON-средство отчётности включает информацию о покрытии в coverageMap, если покрытие включено.

HTML Средство отчётности ​

Генерирует HTML-файл для интерактивного просмотра результатов тестов через GUI. После генерации файла Vitest запустит локальный сервер разработки и предоставит ссылку для просмотра отчета в браузере.

Выходной файл можно указать с помощью опции outputFile. Если опция outputFile не указана, будет создан новый HTML-файл.

bash
npx vitest --reporter=html
ts
export default defineConfig({
  test: {
    reporters: ['html'],
  },
});

TIP

Для этого средства отчётности требуется установленный пакет @vitest/ui.

TAP Средство отчётности ​

Генерирует отчёт в соответствии с Test Anything Protocol (TAP).

bash
npx vitest --reporter=tap
ts
export default defineConfig({
  test: {
    reporters: ['tap'],
  },
});

Пример отчета TAP:

bash
TAP version 13
1..1
not ok 1 - __tests__/test-file-1.test.ts # time=14.00ms {
    1..1
    not ok 1 - first test file # time=13.00ms {
        1..2
        not ok 1 - 2 + 2 should equal 4 # time=11.00ms
            ---
            error:
                name: "AssertionError"
                message: "expected 5 to be 4 // Object.is equality"
            at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
            actual: "5"
            expected: "4"
            ...
        ok 2 - 4 - 2 should equal 2 # time=1.00ms
    }
}

TAP Flat Средство отчётности ​

Генерирует плоский отчёт TAP. Как и средство отчётности tap, результаты тестов форматируются в соответствии со стандартами TAP, но наборы тестов форматируются как плоский список, а не как вложенная иерархия.

bash
npx vitest --reporter=tap-flat
ts
export default defineConfig({
  test: {
    reporters: ['tap-flat'],
  },
});

Пример плоского отчета TAP:

bash
TAP version 13
1..2
not ok 1 - __tests__/test-file-1.test.ts > first test file > 2 + 2 should equal 4 # time=11.00ms
    ---
    error:
        name: "AssertionError"
        message: "expected 5 to be 4 // Object.is equality"
    at: "/root-directory/__tests__/test-file-1.test.ts:20:28"
    actual: "5"
    expected: "4"
    ...
ok 2 - __tests__/test-file-1.test.ts > first test file > 4 - 2 should equal 2 # time=0.00ms

Средство отчётности зависших процессов ​

Отображает список зависших процессов, если они препятствуют безопасному завершению работы Vitest. Средство отчётности hanging-process само по себе не отображает результаты тестов, но может использоваться в сочетании с другим средством отчётности для мониторинга процессов во время выполнения тестов. Использование этого средства отчётности может быть ресурсоемким, поэтому его следует обычно применять для отладки в ситуациях, когда Vitest постоянно не может завершить процесс.

bash
npx vitest --reporter=hanging-process
ts
export default defineConfig({
  test: {
    reporters: ['hanging-process'],
  },
});

Средство отчётности Github Actions ​

Генерирует команды рабочего процесса для аннотирования сбоев тестов. Это средство отчётности автоматически активируется вместе со средством отчётности default, когда process.env.GITHUB_ACTIONS === 'true'.

Github ActionsGithub Actions

Если вы настраиваете нестандартные средства отчётности, вам необходимо явно добавить github-actions.

ts
export default defineConfig({
  test: {
    reporters: process.env.GITHUB_ACTIONS ? ['dot', 'github-actions'] : ['dot'],
  },
});

Вы можете настроить пути к файлам, которые используются в формате команды аннотации GitHub, используя опцию onWritePath. Это полезно при запуске Vitest в контейнерной среде, такой как Docker, где пути к файлам могут отличаться от путей в среде GitHub Actions.

ts
export default defineConfig({
  test: {
    reporters: process.env.GITHUB_ACTIONS
      ? [
          'default',
          [
            'github-actions',
            {
              onWritePath(path) {
                return path.replace(
                  /^\/app\//,
                  `${process.env.GITHUB_WORKSPACE}/`
                );
              },
            },
          ],
        ]
      : ['default'],
  },
});

Blob Средство отчётности ​

Сохраняет результаты тестов локально, чтобы их можно было позже объединить с помощью команды --merge-reports. По умолчанию сохраняет все результаты в папку .vitest-reports, но это поведение можно переопределить флагами --outputFile или --outputFile.blob.

bash
npx vitest --reporter=blob --outputFile=reports/blob-1.json

Мы рекомендуем использовать это средство отчётности, если вы запускаете Vitest на разных машинах с флагом --shard. Все blob-отчёты могут быть объединены в единый отчёт с помощью команды --merge-reports в конце вашего CI-конвейера:

bash
npx vitest --merge-reports=reports --reporter=json --reporter=default

TIP

Ни --reporter=blob, ни --merge-reports не работают в режиме наблюдения.

Пользовательские средства отчётности ​

Вы можете использовать сторонние пользовательские средства отчётности, установленные из NPM, указав их имя пакета в опции средств отчётности:

bash
npx vitest --reporter=some-published-vitest-reporter
ts
export default defineConfig({
  test: {
    reporters: ['some-published-vitest-reporter'],
  },
});

Кроме того, вы можете определить свои собственные пользовательские средства отчётности и использовать их, указав путь к файлу:

bash
npx vitest --reporter=./path/to/reporter.ts

Пользовательские средства отчётности должны реализовывать интерфейс Reporter.

Pager
Предыдущая страницаТестовые проекты
Следующая страницаПокрытие кода

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team

https://vitest.dev/guide/reporters

Выпущено на условиях лицензии MIT.

Авторские права (c) 2021-Present Vitest Team