预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。
31.5. 测试覆盖率检查 #
可以在编译 PostgreSQL 源代码时加入覆盖率测试插桩,从而检查回归测试或任何其他与该代码一起运行的测试套件覆盖了代码的哪些部分。目前,这只在使用
GCC 编译时受支持,并且需要 gcov 和
lcov 软件包。
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 coverage 和 make coverage-html
会互相覆盖对方的文件,因此混用它们可能会让人困惑。)
在生成覆盖率报告前,可以先运行若干不同的测试;执行计数会累计。如果想在多次测试运行之间重置执行计数,请运行:
make coverage-clean
如果只想获得代码树某一部分的覆盖率报告,可以在子目录中运行
make coverage-html 或 make
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。
在生成覆盖率报告前,可以先运行若干不同的测试;执行计数会累计。