內容

名稱

Test2 - 撰寫所有測試工具的架構,讓它們能一起運作。

說明

Test2 是透過分岔 Test::Builder、徹底改造、新增許多新功能和功能所產生的新測試架構。

有什麼新功能?

更容易測試新的測試工具。

從一開始,Test2 就具備內省功能。使用 Test::Builder 最多只能捕捉測試工具輸出以進行驗證。Test2 使用 Test2::API::intercept() 讓這變得容易。

更好的診斷功能。

Test2 使用 Test2::API::Context 物件追蹤檔案名稱、行號和工具詳細資料。這個物件大幅簡化了錯誤報告位置的追蹤。

事件驅動。

基於 Test2 的工具會產生事件,這些事件會經過處理系統,然後再由格式化程式輸出。這個事件系統允許豐富的外掛程式和擴充套件支援。

更完整的 API。

Test::Builder 只提供少數方法來產生 TAP 行。Test2 檢視了人們使用 Test::Builder 時所做的所有事情,這些事情需要對其進行調整。Test2 為幾乎所有先前人們所沒有的所需功能製作了公開的 API 函式。

支援 TAP 以外的輸出。

Test::Builder 假設所有內容最後都會變成 TAP。Test2 沒有這樣的假設。Test2 提供方法讓你可以指定替代和自訂格式化程式。

子測試實作更為合理。

Test::Builder 的子測試實作證明是瘋狂的。Test2 使用堆疊式事件中心系統,大幅改善了子測試的實作方式。

支援執行緒/分岔。

可以使用 Test2::IPC 開啟 Test2 對分岔和執行緒的支援。開啟後,執行緒和分岔會正常運作,並符合預期。

開始使用

如果你有興趣使用新工具撰寫測試,你應該看看 Test2::SuiteTest2::Suite 是獨立的 cpan 套件,其中包含許多在 Test2 上實作的工具。

如果你有興趣撰寫新工具,你應該先看看 Test2::API

命名空間配置

這說明了 Test2 生態系統的命名空間配置。這裡列出的並非所有命名空間都是 Test2 套件的一部分,有些是在 Test2::Suite 中實作的。

Test2::Tools:

這個命名空間是給工具組的。這個命名空間中的模組應該匯出像 ok()is() 這樣的工具。為 Test2 撰寫的大多數內容都應該放在這裡。這個命名空間中的模組不得匯出其他工具的子程式。如果你想這麼做,請參閱 "Test2::Bundle::" 命名空間。

Test2::Plugin:

此命名空間是給外掛程式使用的。外掛程式是變更或增強 Test2 行為的模組。外掛程式的範例是將編碼設定為 utf8 的全域模組。另一個範例是會在第一次測試失敗後導致放棄事件的模組。

Test2::Bundle:

此命名空間是給工具和外掛程式的套件使用的。載入其中一個套件可能會載入多個工具和外掛程式。此命名空間中的模組不應直接實作工具。一般來說,此命名空間中的模組應載入工具和外掛程式,然後將項目重新匯出到使用者的命名空間。

Test2::Require:

此命名空間是給會在條件不允許執行時導致測試略過的模組使用的。範例會是在較舊的 Perl 上略過測試,或是在未安裝非必要的模組時略過測試的模組。

Test2::Formatter:

格式化程式存在於此命名空間下。目前唯一的格式化程式是 Test2::Formatter::TAP。第三方發行版建立新的格式化程式並放置於此命名空間下是可以接受的。

Test2::Event:

事件存在於此命名空間下。第三方發行版新增新的事件類型至此命名空間下是可以接受的。

Test2::Hub:

Hub 子類別(和一些 hub 實用程式物件)存在於此命名空間下。第三方發行版新增新的 hub 子類別至此命名空間下是完全合理的。

Test2::IPC:

IPC 子系統存在於此命名空間下。除了 IPC 驅動程式外,沒有太多好的理由可以新增任何項目至此命名空間。

Test2::IPC::Driver:

IPC 驅動程式存在於此命名空間下。建立新的 IPC 驅動程式並將其放置於此命名空間下是可以的。

Test2::Util:

此命名空間是給測試工具使用的通用實用程式使用的。新增新的模組至此命名空間時,請體貼他人。

Test2::API:

這是 Test2 API 和相關套件。

Test2:

Test2:: 命名空間是為擴充套件和架構而設計的。工具、外掛程式等不應直接進入此命名空間。但是用於建置工具和外掛程式的擴充套件可以放在這裡。

簡而言之:如果模組匯出任何應由測試指令碼直接執行的內容,則可能不應直接進入 Test2::XXX

另請參閱

Test2::API - 主要 API 函式。

Test2::API::Context - 內容物件的詳細文件。

Test2::IPC - 用於執行緒/分岔支援的 IPC 系統。

Test2::Formatter - 格式化程式,例如 TAP 就在這裡。

Test2::Event - 事件存在於此命名空間中。

Test2::Hub - 所有事件最終都會透過集線器傳送。自訂集線器是 intercept()run_subtest() 的實作方式。

與我們聯繫

許多 Test2 開發人員和使用者會潛伏在 irc://irc.perl.org/#perl-qairc://irc.perl.org/#toolchain 上。我們還有一個 Slack 團隊,任何擁有 @cpan.org 電子郵件地址的人都可以加入 https://perl-test2.slack.com/ 如果您沒有 @cpan.org 電子郵件,您可以透過寄送電子郵件給 Chad Granum <exodist@cpan.org> 來要求 Slack 邀請。

原始碼

Test2 的原始碼存放庫可以在 http://github.com/Test-More/test-more/ 中找到。

維護人員

Chad Granum <exodist@cpan.org>

作者

Chad Granum <exodist@cpan.org>

版權

版權所有 2020 Chad Granum <exodist@cpan.org>。

此程式是免費軟體;您可以在與 Perl 相同的條款下重新分發或修改它。

請參閱 http://dev.perl.org/licenses/