我有一个很大的项目,但目前测试很少。覆盖率高得惊人。覆盖率高的原因是因为仅报告具有测试的文件的覆盖率!!
随着我添加更多测试,我的覆盖范围实际上会下降。当我添加新的测试文件时,它会引入更多源,并且语句/分支/函数/行总数会增加。
在覆盖率 html 报告中,大量的类根本没有列出。
如何将所有源文件包含在我的覆盖率报告中,即使它们没有被我的测试引用?
我花了一些时间研究这个问题,但我不明白为什么他们没有被报道。
(不幸的是,我无法从工作计算机访问 SO,因此我无法直接复制/粘贴任何内容 - 我必须输入示例)
对此感兴趣的主要配置区域似乎是仪器加载器。据我了解,
istanbul-instrumenter-loader
向我的 javascript 添加了额外的代码(从 Typescript 转换而来)。然后运行测试并捕获覆盖率信息。然后,coverage-istanbul
记者报告捕获的数据。
我的加载器配置:
{
test: /\.ts$/,
use: {
loader: "istanbul-instrumenter-loader",
options: {
esModules: true,
produceSourceMap: true
}
},
enforce: "post",
include: path.resolve("main"), // main is my src folder
exclude: /.spec.ts$/
}
我尝试通过将其更改为 glob 或正则表达式来弄乱此处的 include 语句,但我尝试的任何方法都没有改善这种情况。
只是为了确认我的
tsconfig.spec.json
文件包含我想要覆盖的所有源,因为我故意对未包含在覆盖率报告中的文件之一造成编译错误,并确认此错误出现在测试编译中。