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 レポーターを使用する場合、Vite 設定ファイルまたは CLI で outputFile 設定オプションを含めることで、テスト出力をファイルに書き出すことができます。

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 レポーターは、summary 機能を持たない default レポーターと同等です。

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 形式で出力します。ターミナルに表示することも、outputFile 設定オプションを使用して XML ファイルに書き出すことも可能です。

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 レポーター ​

Jest の --json オプションと互換性のある JSON 形式でテスト結果のレポートを生成します。ターミナルに表示することも、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 レポーター ​

インタラクティブな GUI を介してテスト結果を表示するための HTML ファイルを生成します。ファイルが生成された後、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 フラットレポーター ​

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 レポーター ​

テスト失敗のアノテーションを提供するワークフローコマンドを出力します。このレポーターは、process.env.GITHUB_ACTIONS === 'true' の場合、default レポーターと同時に自動的に有効になります。

Github ActionsGithub Actions

デフォルト以外のレポーターを設定する場合、github-actions を明示的に追加する必要があります。

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

onWritePath オプションを使用すると、GitHub のアノテーションコマンド形式で出力されるファイルパスをカスタマイズすることが可能です。これは、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

--shard フラグを使用して異なるマシンで Vitest を実行している場合は、このレポーターの利用を推奨します。 すべての blob レポートは、CI パイプラインの最後に --merge-reports コマンドを使用して他の任意のレポート形式にマージ可能です。

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ライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/reporters

MITライセンス の下で公開されています。

Copyright (c) 2021-Present Vitest Team