書き捨てだけど、テストを書く場合
表に出せない感じの書き捨てスクリプトとか、
ちょいちょいちょいっと書いて、結果を見て終わりなんだけど、
やっぱテスト書きたいよね、っていうお話。
CPAN形式にしちゃってローカルリポジトリで管理してもいんだけど、
やっぱ大げさだし、こんな感じで配置してみた。
.
├── aaa.pl
├── lib
│ └── Foo
│ └── Bar.pm
└── t
└── 00_Bar.t
“aaa.pl”はこんな感じ。
use strict; use warnings; use v5.10; use FindBin; use lib "$FindBin::Bin/lib"; use Foo::Bar qw/hoge/; say hoge();
でもって、こういうのが2つ3つくらいできる予定。
いっそ、”bin”フォルダでも作った方が良い気もする。
“lib/Foo/Bar.pm”はこんな感じ。
package Foo::Bar;
use strict;
use warnings;
use base qw/Exporter/;
our @EXPORT_OK = qw/hoge/;
sub hoge {
return 'hoge';
}
1;
そして、”t/00_Bar.t”はこんな感じ。
use strict;
use warnings;
use Test::More;
BEGIN { use_ok( 'Foo::Bar', qw/hoge/ ); }
ok( hoge() eq 'hoge', 'hoge.' );
done_testing();
“00_Bar.t”ってファイル名はどうよ?って思ったけど、
そこは適宜対応で。
ちなみに、テストはこんな感じ実行する。
$ prove -Ilib -v t
t/00_Bar.t ..
ok 1 - use Foo::Bar;
ok 2 - hoge.
1..2
ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs ( 0.04 usr 0.00 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: PASS
-vを付けないで実行した場合はこんな感じ。
$ prove -Ilib t
t/00_Bar.t .. ok
All tests successful.
Files=1, Tests=2, 0 wallclock secs ( 0.04 usr 0.00 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: PASS
何が言いたかったというと、
Test::Moreのuse_okの引数は、
モジュール名の他に、インポートする関数も指定できる。
おしまい。
Leave a Comment