Skip to content

33.5. 测试覆盖率检查#

33.5.1. 使用 Autoconf 和 Make 进行覆盖
33.5.2. 使用 Meson 进行覆盖

PostgreSQL 源代码可以使用覆盖测试工具进行编译,这样就可以检查回归测试或与代码一起运行的任何其他测试套件覆盖了代码的哪些部分。目前在使用 GCC 编译时支持此功能,并且需要gcovlcov包。

33.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进行清理。

33.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

在生成覆盖报告之前,你可以运行多个不同的测试;执行计数会累积。