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

如何在Nx+NestJS的Jest E2E/集成测试中获取完整代码覆盖率?

解决Nx项目中Jest E2E测试覆盖率未包含目标代码的问题

你的项目目录结构如下:

src/
├─ apps/
│  ├─ app1/
│  ├─ app1-e2e/
│  ├─ app2/
├─ libs/
│  ├─ lib1/

你在app1-e2e里编写的Jest集成测试用到了app1和lib1的代码,但生成覆盖率报告时只显示测试文件自身的覆盖率,没有把目标代码纳入统计范围。要解决这个问题,只需调整Jest的覆盖率收集配置:

方法一:修改app1-e2e的jest.config.ts

找到apps/app1-e2e/jest.config.ts文件,添加或修改collectCoverageFrom字段,明确指定要收集覆盖率的源码路径:

export default {
  // 保留原有其他配置
  collectCoverageFrom: [
    // 包含app1的所有源码文件
    '../app1/**/*.{ts,tsx,js,jsx}',
    // 包含lib1的所有源码文件
    '../../libs/lib1/**/*.{ts,tsx,js,jsx}',
    // 排除app1自己的单元测试文件
    '!../app1/**/*.spec.{ts,tsx,js,jsx}',
    // 排除lib1自己的单元测试文件
    '!../../libs/lib1/**/*.spec.{ts,tsx,js,jsx}'
  ],
};

方法二:修改Nx的project.json配置

如果项目通过project.json管理测试参数,找到apps/app1-e2e/project.json中的targets.test.options节点,添加collectCoverageFrom配置:

{
  "targets": {
    "test": {
      "executor": "@nx/jest:jest",
      "options": {
        // 保留原有其他配置
        "collectCoverageFrom": [
          "../app1/**/*.{ts,tsx,js,jsx}",
          "../../libs/lib1/**/*.{ts,tsx,js,jsx}",
          "!../app1/**/*.spec.{ts,tsx,js,jsx}",
          "!../../libs/lib1/**/*.spec.{ts,tsx,js,jsx}"
        ]
      }
    }
  }
}

配置完成后,重新运行nx run app1-e2e --codeCoverage,生成的覆盖率报告就会包含app1和lib1的代码统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:35:27