Test::Builder::Module - 測試模組的基本類別
# Emulates Test::Simple
package Your::Module;
my $CLASS = __PACKAGE__;
use parent 'Test::Builder::Module';
@EXPORT = qw(ok);
sub ok ($;$) {
my $tb = $CLASS->builder;
return $tb->ok(@_);
}
1;
這是基於 Test::Builder 模組的超類別。它提供了一些常見的功能,以及取得基礎 Test::Builder 物件的方法。
Test::Builder::Module 是 Exporter 的子類別,這表示您的模組也是 Exporter 的子類別。@EXPORT、@EXPORT_OK 等都正常運作。
提供了一些方法來為您執行 use Your::Module tests => 23
部分。
Test::Builder::Module 提供一個 import()
方法,其作用方式與 Test::More 的基本方式相同,設定計畫並控制函數和變數的匯出。這允許您的模組獨立於 Test::More 設定計畫。
傳遞給 import()
的所有參數都會傳遞給 Your::Module->builder->plan()
,除了 import =>[qw(要匯入的事項)]
。
use Your::Module import => [qw(this that)], tests => 23;
表示要匯入函數 this()
和 that()
,以及將計畫設定為 23 個測試。
import()
也將建構函式的 exported_to()
屬性設定為 import()
函數的呼叫者。
可以透過覆寫 import_extra()
,將其他行為新增到 import()
方法。
Your::Module->import_extra(\@import_args);
import_extra()
由 import()
呼叫。它提供機會讓您可以根據匯入清單,將行為新增到模組中。
不應傳遞給 plan()
的任何額外引數,都應由這個方法移除。
請參閱 Test::More,了解其使用範例。
注意這個機制非常不穩定,而且可能會變更,因為它在目前的形式中感覺有點像是醜陋的駭客手法。
Test::Builder::Module 提供一些取得基礎 Test::Builder 物件的方法。
my $builder = Your::Class->builder;
這個方法傳回與 Your::Class 關聯的 Test::Builder 物件。它不是建構函式,所以您可以隨意呼叫它。
這是取得 Test::Builder 物件的首選方式。您不應透過 Test::Builder->new
取得它,這是之前建議的方法。
builder()
傳回的物件可能會在執行階段變更,所以您應在每個函數中呼叫 builder()
,而不是將它儲存在全域變數中。
sub ok {
my $builder = Your::Class->builder;
return $builder->ok(@_);
}
Test2::Manual::Tooling::TestBuilder 說明 Test2 提供的,用於撰寫測試模組的改良選項。