Skip to content
Vitest 3
Main Navigation Průvodce & APIKonfiguraceRežim prohlížečePokročilé API
3.2.0
2.1.9
1.6.1
0.34.6

čeština

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
magyar

čeština

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
magyar

Vzhled

Sidebar Navigation

Úvod

Proč Vitest

Začínáme

Funkce

Konfigurace Vitestu

API

Testovací reference API

Mockovací funkce

Vi

expect

expectTypeOf

assert

assertType

Průvodce

Rozhraní příkazového řádku

Filtrování testů

Testovací projekty

Generátory zpráv

Pokrytí kódu

Snímky

Mockování

Paralelní zpracování

Typové testování

Vitest UI

Testování přímo ve zdrojovém kódu

Testovací kontext

Anotace testů

Testovací prostředí

Rozšíření matcherů

Integrace s IDE

Ladění

Běžné chyby

Průvodce migrací

Migrace na Vitest 3.0

Migrace z Jest

Výkon

Profilování výkonu testů

Zlepšení výkonu

Režim prohlížeče

Rozšířené API

Srovnání

Na této stránce

Generátory zpráv ​

Vitest nabízí několik vestavěných generátorů zpráv pro zobrazení výsledků testů v různých formátech a zároveň umožňuje použití vlastních generátorů. Různé generátory zpráv lze vybrat buď pomocí volby příkazového řádku --reporter, nebo definováním vlastnosti reporters ve vašem konfiguračním souboru. Pokud není zadán žádný generátor zpráv, Vitest použije výchozí generátor default, jak je popsáno níže.

Použití generátorů zpráv přes příkazový řádek:

bash
npx vitest --reporter=verbose

Použití generátorů zpráv přes vitest.config.ts:

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

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

Některé generátory zpráv lze přizpůsobit pomocí dodatečných voleb. Volby specifické pro jednotlivé generátory zpráv jsou popsány v následujících sekcích.

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

Výstup generátoru zpráv ​

Ve výchozím nastavení budou generátory zpráv Vitestu tisknout svůj výstup do terminálu. Při použití generátorů zpráv json, html nebo junit můžete výstup testů místo do terminálu zapsat do souboru. Toho docílíte definováním konfigurační možnosti outputFile buď ve vašem konfiguračním souboru Vite, nebo přes CLI.

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

Kombinování generátorů zpráv ​

Můžete použít více generátorů zpráv současně k zobrazení výsledků testů v různých formátech. Například:

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

Výše uvedený příklad zobrazí výsledky testů v terminálu ve výchozím stylu a zároveň je zapíše ve formátu JSON do určeného výstupního souboru.

Při použití více generátorů zpráv je také možné specifikovat více výstupních souborů, a to následovně:

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

Tento příklad zapíše samostatné JSON a XML zprávy a zároveň zobrazí podrobnou zprávu v terminálu.

Vestavěné generátory zpráv ​

Výchozí generátor zpráv ​

Ve výchozím nastavení (tj. pokud není zadán žádný generátor zpráv) Vitest zobrazí souhrn spuštěných testů a jejich stav v dolní části. Jakmile sada testů projde, její stav bude zobrazen v horní části souhrnu.

Souhrn můžete zakázat konfigurací generátoru zpráv:

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

Příklad výstupu pro probíhající testy:

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

Konečný výstup po dokončení testů:

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)

Základní generátor zpráv ​

Reportér basic je ekvivalentní reportéru default bez summary.

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

Příklad výstupu s použitím základního generátoru zpráv:

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)

Podrobný generátor zpráv ​

Podrobný generátor zpráv je stejný jako výchozí generátor zpráv default, ale navíc zobrazuje každý jednotlivý test po dokončení sady. Dále zobrazuje testy, které aktuálně běží a jejichž doba trvání přesahuje slowTestThreshold. Podobně jako u výchozího generátoru zpráv default můžete zakázat souhrn konfigurací generátoru zpráv.

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

Příklad výstupu pro probíhající testy s výchozí hodnotou 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

Příklad konečného výstupu terminálu pro úspěšnou sadu testů:

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)

Tečkový generátor zpráv ​

Zobrazí jednu tečku pro každý dokončený test, čímž poskytuje minimální výstup a zároveň ukazuje všechny spuštěné testy. Podrobnosti jsou poskytovány pouze pro neúspěšné testy, a to společně se souhrnem základního generátoru zpráv pro danou sadu.

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

Příklad výstupu terminálu pro úspěšnou sadu testů:

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 generátor zpráv ​

Generuje zprávu o výsledcích testů ve formátu JUnit XML. Může být zobrazena v terminálu nebo zapsána do souboru XML pomocí konfigurační možnosti outputFile.

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

Příklad JUnit XML reportu:

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>

Vygenerovaný XML soubor obsahuje vnořené značky testsuites a testcase. Tyto značky lze také přizpůsobit pomocí voleb generátoru zpráv suiteName a classnameTemplate. classnameTemplate může být buď řetězec šablony, nebo funkce.

Podporované zástupné symboly pro možnost classnameTemplate jsou:

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

JSON generátor zpráv ​

Generuje zprávu o výsledcích testů ve formátu JSON, který je kompatibilní s volbou Jest --json. Může být zobrazena v terminálu nebo zapsána do souboru pomocí konfigurační možnosti outputFile.

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

Příklad JSON reportu:

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

Od Vitestu 3, pokud je povoleno pokrytí, JSON generátor zpráv zahrnuje informace o pokrytí v coverageMap.

HTML generátor zpráv ​

Generuje HTML soubor pro zobrazení výsledků testů prostřednictvím interaktivního GUI. Po vygenerování souboru Vitest spustí lokální vývojový server a poskytne odkaz pro zobrazení zprávy v prohlížeči.

Výstupní soubor lze určit pomocí konfigurační možnosti outputFile. Pokud není volba outputFile zadána, bude vytvořen nový HTML soubor.

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

TIP

Tento generátor zpráv vyžaduje nainstalovaný balíček @vitest/ui.

TAP generátor zpráv ​

Generuje zprávu ve formátu Test Anything Protocol (TAP).

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

Příklad TAP reportu:

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 generátor zpráv ​

Vypíše TAP flat report. Podobně jako u generátoru zpráv tap jsou výsledky testů formátovány podle standardů TAP, ale sady testů jsou formátovány jako plochý seznam namísto vnořené hierarchie.

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

Příklad TAP flat reportu:

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

Generátor zpráv o visících procesech ​

Zobrazí seznam visících procesů, pokud nějaké brání Vitestu v bezpečném ukončení. Generátor zpráv hanging-process sám o sobě nezobrazuje výsledky testů, ale může být použit ve spojení s jiným generátorem zpráv k monitorování procesů během běhu testů. Použití tohoto generátoru zpráv může být náročné na zdroje, a proto by mělo být obecně vyhrazeno pro účely ladění v situacích, kdy Vitest důsledně nemůže ukončit proces.

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

Github Actions Generátor zpráv ​

Generuje příkazy pracovního postupu pro poskytnutí anotací pro selhání testů. Tento generátor zpráv je automaticky povolen společně s výchozím generátorem zpráv default, když process.env.GITHUB_ACTIONS === 'true'.

Github ActionsGithub Actions

Pokud konfigurujete jiné než výchozí generátory zpráv, musíte explicitně přidat github-actions.

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

Cesty k souborům, které jsou zobrazeny ve formátu příkazů anotací GitHubu, můžete přizpůsobit pomocí možnosti onWritePath. To je užitečné při spouštění Vitestu v kontejnerizovaném prostředí (např. Docker), kde se cesty k souborům nemusí shodovat s cestami v prostředí 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 Generátor zpráv ​

Ukládá výsledky testů lokálně, aby je bylo možné později sloučit pomocí příkazu --merge-reports. Ve výchozím nastavení ukládá všechny výsledky do složky .vitest-reports, ale toto chování lze přepsat pomocí příznaků --outputFile nebo --outputFile.blob.

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

Doporučujeme použít tento generátor zpráv, pokud spouštíte Vitest na více strojích s příznakem --shard. Všechny blob zprávy lze sloučit do jakékoli jiné zprávy pomocí příkazu --merge-reports na konci vašeho CI pipeline:

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

TIP

Volby --reporter=blob i --merge-reports nefungují v režimu sledování (watch mode).

Vlastní generátory zpráv ​

Můžete použít vlastní generátory zpráv třetích stran nainstalované z NPM zadáním jejich názvu balíčku ve volbě generátorů zpráv:

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

Kromě toho můžete definovat své vlastní generátory zpráv a použít je zadáním jejich cesty k souboru:

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

Vlastní generátory zpráv by měly implementovat rozhraní Reporter.

Pager
Předchozí stránkaTestovací projekty
Další stránkaPokrytí kódu

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/reporters

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team