tests を自分で数えるようなオレオレテストモジュール
#!/usr/bin/perl -w use strict; use warnings; my $t = MyTest->new(); $t->do_test1; $t->do_test2; package MyTest; use Test::Builder; sub new { my $class = shift; my $builder = Test::Builder->new(); $builder->{Have_Plan} = 1;#本当はこれ書きたくない my $self = { builder => $builder, num_tests => 0, }; bless $self, $class; } sub do_test1 { #本当はここで自分のやりたいテストを書く my $self = shift; $self->_my_ok(1); $self->_my_ok(1); $self->_my_ok(1); $self->_my_ok(1); } sub do_test2 { #本当はここで自分のやりたいテストを書く my $self = shift; $self->_my_ok(1); $self->_my_ok(1); } sub _my_ok { my $self = shift; my ($cond) = @_; $self->{builder}->ok($cond); $self->{num_tests}++; } sub DESTROY { my $self = shift; my $builder = $self->{builder}; $builder->expected_tests( $self->{num_tests} ); } 1;
こんな感じでできた。この書き方だと、0.72 くらいの古い Test-Simple でも通る。expected_tests の代わりに plan を使うと、0.72くらいの古い Test-Simple だと駄目。
$builder->{Have_Plan} = 1;#本当はこれ書きたくない
なしでいければいいんだけどなぁ。ちなみに、done_testing がサポートされる頃(0.87以降)なら、コレなしでも OK。
まあ、モジュールの中身触るくらいなら、no_plan にしちゃうほうがましかな。