测试覆盖率
如果您在启动 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_ 表达式才能成为报告的一部分。