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

API

Node API

進階 API

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

插件 API

執行器 API

報告器 API

任務中繼資料

指南

執行測試

擴展報告器

自訂 Pool

配置參考

測試 API 參考

本頁導覽

擴展報告器 ​

WARNING

這是一個進階 API。如果您只想設定內建報告器,請參閱"報告器"指南。

您可以從 vitest/reporters 匯入並擴展現有的報告器,以建立自訂報告器。

擴展內建報告器 ​

通常情況下,您無需從零開始建立報告器。vitest 提供了多個預設報告器,您可以直接擴展它們。

ts
import { DefaultReporter } from 'vitest/reporters';

export default class MyDefaultReporter extends DefaultReporter {
  // 執行自訂邏輯
}

當然,您也可以從頭開始建立報告器。只需擴展 BaseReporter 類別並實作您所需的方法即可。

以下是一個自訂報告器的範例:

ts
import { BaseReporter } from 'vitest/reporters';

export default class CustomReporter extends BaseReporter {
  onCollected() {
    const files = this.ctx.state.getFiles(this.watchFilters);
    this.reportTestSummary(files);
  }
}

或者,您也可以實作 Reporter 介面:

ts
import type { Reporter } from 'vitest/node';

export default class CustomReporter implements Reporter {
  onCollected() {
    // 輸出一些內容
  }
}

然後,您可以在 vitest.config.ts 檔案中使用您的自訂報告器:

ts
import { defineConfig } from 'vitest/config';
import CustomReporter from './custom-reporter.js';

export default defineConfig({
  test: {
    reporters: [new CustomReporter()],
  },
});

已報告的任務 ​

建議使用「已報告的任務」API,而非直接使用報告器接收的任務。

您可以透過呼叫 vitest.state.getReportedEntity(runnerTask) 來存取此 API:

ts
import type { Reporter, RunnerTestFile, TestModule, Vitest } from 'vitest/node';

class MyReporter implements Reporter {
  private vitest!: Vitest;

  onInit(vitest: Vitest) {
    this.vitest = vitest;
  }

  onFinished(files: RunnerTestFile[]) {
    for (const file of files) {
      // 請注意,舊的任務實作使用 "file" 而非 "module"
      const testModule = this.vitest.state.getReportedEntity(
        file
      ) as TestModule;
      for (const task of testModule.children) {
        //                          ^?
        console.log('finished', task.type, task.fullName);
      }
    }
  }
}

匯出的報告器 ​

vitest 內建了一些您可以直接使用的報告器。

內建報告器: ​

  1. BasicReporter
  2. DefaultReporter
  3. DotReporter
  4. JsonReporter
  5. VerboseReporter
  6. TapReporter
  7. JUnitReporter
  8. TapFlatReporter
  9. HangingProcessReporter

基礎抽象報告器: ​

  1. BaseReporter

介面型報告器: ​

  1. Reporter
Pager
上一頁執行測試
下一頁自訂 Pool

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team

https://vitest.dev/advanced/reporters

以 MIT 授權條款 發布。

版權所有 (c) 2021-Present Vitest Team