支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4

31.4. TAP 測試 #

各種測試,特別是 src/bin 下的客戶端程式測試,使用 Perl TAP 工具,並使用 Perl 測試程式 prove 執行。 您可以透過設定 make 變數 PROVE_FLAGS 將命令列選項傳遞給 prove,例如

make -C src/bin check PROVE_FLAGS='--timer'

有關更多資訊,請參閱 prove 的手冊頁面。

make 變數 PROVE_TESTS 可用於定義一個以空格分隔的路徑列表,該路徑相對於調用 proveMakefile,以執行指定的測試子集,而不是預設的 t/*.pl。 例如

make check PROVE_TESTS='t/001_test1.pl t/003_test3.pl'

TAP 測試需要 Perl 模組 IPC::Run。 該模組可從 CPAN 或作業系統套件取得。 它們還需要使用選項 --enable-tap-tests 配置 PostgreSQL

廣義上講,如果您說 make installcheck,TAP 測試將測試先前安裝的安裝樹中的可執行檔,如果您說 make check,則會從目前的原始碼建構新的本地安裝樹。 無論哪種情況,它們都會初始化一個本地實例(資料目錄),並暫時在其中執行伺服器。 其中一些測試會執行多個伺服器。 因此,這些測試可能會相當消耗資源。

重要的是要了解,即使您說 make installcheck,TAP 測試也會啟動測試伺服器。 這與傳統的非 TAP 測試基礎設施不同,後者希望在這種情況下使用已在執行的測試伺服器。 一些 PostgreSQL 子目錄包含傳統風格和 TAP 風格的測試,這意味著 make installcheck 將產生來自臨時伺服器和已在執行的測試伺服器的混合結果。

31.4.1. 環境變數 #

資料目錄根據測試檔名命名,如果測試失敗,將保留這些目錄。 如果設定了環境變數 PG_TEST_NOCLEAN,則無論測試狀態如何,都將保留資料目錄。 例如,在執行 pg_dump 測試時,無論測試結果如何都保留資料目錄

PG_TEST_NOCLEAN=1 make -C src/bin/pg_dump check

此環境變數還可以防止測試的臨時目錄被移除。

測試套件中的許多操作使用 180 秒的逾時,這在速度較慢的主機上可能會導致負載引起的逾時。 將環境變數 PG_TEST_TIMEOUT_DEFAULT 設定為較高的數字將變更預設值,以避免這種情況。

提交更正

如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單來報告文件問題。