書き捨てだけど、テストを書く場合
表に出せない感じの書き捨てスクリプトとか、
ちょいちょいちょいっと書いて、結果を見て終わりなんだけど、
やっぱテスト書きたいよね、っていうお話。
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