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

Runner API

报告器 API

任务元数据

指南

运行测试

扩展报告器

自定义测试池

配置 Vitest

测试 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
上一页运行测试
下一页自定义测试池

基于 MIT 许可证 发布。

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

https://vitest.dev/advanced/reporters

基于 MIT 许可证 发布。

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