Hatena::Groupdann

dann's blog このページをアンテナに追加 RSSフィード

Fork me on GitHub

2008-06-05

Test::Classでヘルパースクリプトを作らずにテストを実行する

| Test::Classでヘルパースクリプトを作らずにテストを実行する - dann's blog を含むブックマーク はてなブックマーク - Test::Classでヘルパースクリプトを作らずにテストを実行する - dann's blog Test::Classでヘルパースクリプトを作らずにテストを実行する - dann's blog のブックマークコメント

ベースクラス

package My::TestBase;
use strict;
use warnings;

use base 'Test::Class';

INIT { Test::Class->runtests }

1;

テストクラス

package My::Dog::Test;
use base qw/My::TestBase/;
use Test::More;

sub test_bark : Test(2) {
    is 'bow', "bowbow", 'dog barks';
    is 'bowbow', "bowbow", 'dog barks twice';
}

1;

上記のようにベースクラスを用意してあげると、テストのクラスでruntestsを毎回書く必要は無くなるので、ブートストラップ用のスクリプトはいらないかなぁと。

後は、prove -lv t/lib/My/Dog/Test.pm とすればよいと。

(perl的な配置だと、prove -lv t/01-dog.t とかのほうがあってるのかな。そこらはまだよくわかってないけれど、クラスに対するテストであることがわかるのがいいかなと。)

もしくは、以下のように必ずテストパッケージの下部でruntestsを書いておいてもブートストラップ用のスクリプトは不要そうです。

package My::AnotherDog::Test;
use base qw/Test::Class/;
use Test::More;

sub test_bark : Test(2) {
    is 'bow',    "bowbow", 'dog barks';
    is 'bowbow', "bowbow", 'dog barks twice';
}

__PACKAGE__->runtests;

1;