Test::More 0.95_01以降ではsubtest毎にdone_testingって書かなくてもOK

昨日Twitterにふらっと投げたらreply付いたので、せっかくだからブログに書いておく。

何気なくTest::MoreのPodを読んでいると、

This adds an implicit done_testing() to the end of your subtest. The following two subtests are equivalent:

http://search.cpan.org/~mschwern/Test-Simple-0.96/lib/Test/More.pm
  subtest 'subtest with implicit done_testing()', sub {
      ok 1, 'subtests with an implicit done testing should work';
      ok 1, '... and support more than one test';
      ok 1, '... no matter how many tests are run';
  };

  subtest 'subtest with explicit done_testing()', sub {
      ok 1, 'subtests with an explicit done testing should work';
      ok 1, '... and support more than one test';
      ok 1, '... no matter how many tests are run';
      done_testing();
  };

なんて記述を見つけて、done_testing書かないと怒られるやんと思ってたら、0.95_1のChangelogに記述が。

New Features
* subtests without a 'plan' or 'no_plan' have an implicit 'done_testing()' added to them.

http://cpansearch.perl.org/src/MSCHWERN/Test-Simple-0.96/Changes

ということで、書かなくてもよくなっていたようです。


どうせなら$setupとか$teardownにcoderefを突っ込んでおけば勝手に呼んでくれたりすればもっと便利だと思うのですが、それはTest::Class使えよってことになるかも知れない。