我有一个很大的项目,但是目前很少进行测试。覆盖范围惊人地高。覆盖率高的原因是,仅针对具有测试的文件才报告覆盖率!
随着我添加更多测试,我的覆盖范围实际上下降了。当我添加一个新的测试文件时,它将引入更多的源,并且语句/分支/函数/行的总数上升。
在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
文件包含了我想要覆盖的所有来源,我故意在覆盖率报告中未包含的文件之一上导致了编译错误,并确认此错误出现在测试汇编。