Test::More

パッケージのテストをサポートする

use Test::More tests => テスト数
Module::Starter でパッケージのひな形を作ると、./t の中にテストスクリプトが生成される。
01.test-name1.t , 02.test-name2.t などを追加して、テストを追加する。

指定したテスト数と、実際のテスト数が食い違っていると、FAIL判定される。
テスト数指定を省略する事も可能。その場合は、最後に、done_testing() を実行して全てのテストが終了した事を通知する。

use modeule-name; のテスト :
BEGIN {
    use_ok( 'module-name' [, qw(エクスポートする関数orタグのリスト)] );
}
Module::Starter のひな形では 00.load.t でテストされるので、そのまま使えばよい。
エクスポート関数を指定する必要がある場合は2番目のパラメータに指定する。

テストする(1) :
cmp_ok($result, $op, $expect, $test-name);
他にも色々なメソッドがあるが、テストFAILの時に結果がダンプされるので、cmp_okが最も便利。
例えば、以下のように使う。
cmp_ok($result, '==', $expect, 'test1');
cmp_ok($result, 'eq', $expect, 'test2');

テストする(2) :
ok(テスト条件, 'test_ID');
真偽値のテストなど結果を表示しても無意味な場合は、ok を使用する。

正規表現との比較 :
like($result, qr/$expect/, $test-name);        # $result =~ /$expect/
unlike($result, qr/$expect/, $test-name);     # $result =~ /$expect/

デバッグメッセージの表示 :
diag($message);
モジュールの画面出力はリダイレクトされているので、画面には表示されない。

pod-coverage.t :
all_pod_coverage_ok( {
     also_private => [qr/^(AAA|BBB|・・・)$/]
} );
pod のカバレッジをテストする。pod の記述がなくてもよい関数・変数は、also_privete を追加してリストする。
"_" で始まる関数・変数は、自動的にプライベート関数・変数とみなされ、pod カバレッジテストは行われない。