测试覆盖率
如果您在启动 deno test
时指定 --coverage
标志,Deno 会将测试覆盖率收集到您代码的目录中。
此覆盖率信息直接从 JavaScript 引擎 (V8) 获取,非常准确。
然后,可以使用 deno coverage
工具将此覆盖率信息从内部格式进一步处理为众所周知的格式。
⚠️ 为确保覆盖率结果一致,请确保在运行测试后立即处理覆盖率数据。否则,源代码和收集的覆盖率数据可能会不同步,并意外显示未覆盖的行。
# Go into your project's working directory
git clone https://github.com/oakserver/oak && cd oak
# Collect your coverage profile with deno test --coverage=<output_directory>
deno test --coverage=cov_profile
# From this you can get a pretty printed diff of uncovered lines
deno coverage cov_profile
# Or generate an HTML report
deno coverage cov_profile --html
# Or generate an lcov report
deno coverage cov_profile --lcov --output=cov_profile.lcov
# Which can then be further processed by tools like genhtml
genhtml -o cov_profile/html cov_profile.lcov
默认情况下,deno coverage
会排除任何与正则表达式 test\.(ts|tsx|mts|js|mjs|jsx|cjs|cts)
匹配的文件,并且只考虑包含与正则表达式 ^file:
匹配的说明符 - 即远程文件将从覆盖率报告中排除。
可以使用 --exclude
和 --include
标志覆盖这些过滤器。模块说明符必须匹配 include_regular 表达式并且不匹配 exclude_ 表达式才能成为报告的一部分。