我有一个很大的项目,但目前在它的测试很少。覆盖率惊人地高。覆盖率高的原因是因为覆盖率仅针对具有测试的文件报告!!
我的覆盖率实际上随着我添加更多的测试而下降。当我添加一个新的测试文件时,它会拉入更多的源代码,语句/分支/函数/行的总数会增加。
在覆盖率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$/
}
我试过把include语句修改成一个glob或者一个正则表达式,但是没有任何改进。
为了确认我的tsconfig.spec.json
文件包含了我想要覆盖的所有源代码,我故意在其中一个没有包含在覆盖报告中的文件上造成了编译错误,并确认这个错误出现在测试编译中。
1条答案
按热度按时间li9yvcax1#
你需要配置nyc通过nycrc文件加载所有文件。具体来说,您需要设置
all: true
。这在这里的文档中讨论