如何用Vitest和v8为单个测试文件生成代码覆盖率报告?
解决Vitest单文件测试与单文件覆盖率报告问题
具体解决方案
方式1:临时运行时指定参数
直接在终端执行以下命令,既能限定仅运行目标测试文件,又能只收集对应业务文件的覆盖率:
npm run test:coverage -- hello.test.ts --coverage.collectCoverageFrom=src/hello.ts
注意:
--是npm用来传递额外参数给脚本命令的分隔符,后面的参数会直接传给vitest。
方式2:新增专用npm脚本
如果需要频繁执行这个测试任务,可以在package.json里新增一条专属脚本:
"test:hello:coverage": "vitest run --coverage --collectCoverageFrom='src/hello.ts' hello.test.ts"
之后只需执行以下命令即可:
npm run test:hello:coverage
问题原因说明
你之前使用--collectCoverageFrom=src/hello.ts无效,是因为Vitest的覆盖率相关命令行参数需要以--coverage.作为前缀(对应配置文件中的coverage配置项),直接使用--collectCoverageFrom不会被识别为覆盖率配置的一部分。
另外,单独运行npm run test:coverage hello.test.ts时,vitest只会执行指定的测试文件,但覆盖率收集逻辑默认还是会扫描所有符合全局配置的文件,因此会包含无关文件的覆盖率数据。
内容的提问来源于stack exchange,提问作者sonata22
相关产品推荐
相关产品推荐

