受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

31.5. 测试覆盖率检查 #

可以用覆盖率测试插装编译 PostgreSQL 源代码,从而检查回归测试或任何 其他与该代码一起运行的测试套件覆盖了代码的哪些部分。目前,这只在使用 GCC 编译时受支持,并且需要gcovlcov软件包。

31.5.1. 使用 Autoconf 和 Make 的覆盖率检查 #

一个典型的工作流程如下:

./configure --enable-coverage ... OTHER OPTIONS ...
make
make check # or other test suite
make coverage-html

然后将 HTML 浏览器指向coverage/index.html

如果没有lcov,或者你更喜欢文本输出而不是 HTML 报告,可以运行:

make coverage

来代替make coverage-html,这样会为与测试相关的 每个源文件生成.gcov输出文件。 (make coveragemake coverage-html 会互相覆盖对方的文件,因此混用它们可能会让人困惑。)

在生成覆盖率报告前,可以先运行若干不同的测试;执行计数会累计。 如果想在多次测试运行之间重置执行计数,请运行:

make coverage-clean

如果只想获得代码树某一部分的覆盖率报告,可以在子目录中运行 make coverage-htmlmake coverage命令。

完成后,使用make distclean进行清理。

31.5.2. 使用 Meson 的覆盖率检查 #

一个典型的工作流程如下:

meson setup -Db_coverage=true ... OTHER OPTIONS ... builddir/
meson compile -C builddir/
meson test -C builddir/
cd builddir/
ninja coverage-html

然后将 HTML 浏览器指向 ./meson-logs/coveragereport/index.html

在生成覆盖率报告前,可以先运行若干不同的测试;执行计数会累计。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。