You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Istanbul、Coveralls和ts-node生成TypeScript测试覆盖率?

我来帮你搞定这个TypeScript项目的测试覆盖率问题!你之前用旧版istanbul的命令行不通,主要是因为它对TypeScript的支持不太友好,现在大家都用nyc(也就是Istanbul的官方CLI工具)来配合ts-node做TS项目的覆盖率统计了,下面是具体的解决步骤:

解决TypeScript项目Mocha+ts-node的测试覆盖率问题

1. 替换旧依赖,安装必备工具

先把旧版的istanbul卸载掉,然后安装nyc和专门适配TypeScript的配置包:

npm uninstall istanbul --save-dev
npm install nyc @istanbuljs/nyc-config-typescript --save-dev

(如果你的项目还没装mocha、ts-node、typescript这些基础依赖,记得先把它们也装到devDependencies里)

2. 配置nyc识别TypeScript代码

在你的package.json里新增一段nyc配置,指定要统计的文件范围和TS适配规则:

{
  "nyc": {
    "extends": "@istanbuljs/nyc-config-typescript",
    "include": ["src/**/*.ts"],
    "exclude": ["src/**/*.spec.ts"]
  }
}

这个配置会让nyc只统计业务代码(排除测试文件),并且自动处理TypeScript的转译逻辑。

3. 添加覆盖率测试脚本

在package.json的scripts里新增一个专门的覆盖率测试命令:

{
  "scripts": {
    "test": "mocha -r ts-node/register src/**/*.spec.ts",
    "test:coverage": "nyc mocha -r ts-node/register src/**/*.spec.ts"
  }
}

4. 运行覆盖率测试

现在直接执行下面的命令,就能同时跑测试和生成覆盖率报告了:

npm run test:coverage

执行完成后,你会在终端看到测试结果,项目根目录还会生成一个coverage文件夹,打开里面的index.html文件,就能直观看到每个TS文件的覆盖率详情(包括语句、分支、函数的覆盖情况)。

补充说明

旧版的istanbul cover命令是针对原生JavaScript设计的,没办法识别ts-node转译TypeScript的过程,所以无法正确统计TS代码的覆盖率。而nyc作为Istanbul的新一代CLI工具,专门做了对TS的支持,配合@istanbuljs/nyc-config-typescript配置包,就能完美适配你的测试流程。

内容的提问来源于stack exchange,提问作者Ole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:11:53