Test::Moreで、特定のsubtestだけを実行する
2015年8月6日
Test::Flattenってのを使うとできるぽい。
特定のひとつだけなので、直接Perlをぶっ叩く感じだと、以下のような感じ。
SUBTEST_FILTER=hogehoge perl -MTest::Flatten t/MyApp/main.t
環境変数(SUBTEST_FILTER)に入れたsubtestだけが実行される。
上記の場合だと、
use Test::More; subtest 'hogehoge' => sub { ok(1,'これはok'); }
複数のsubtestがあった場合でも、特定のtestだけを実行できる。
実際は、cartonを使っているので以下のような感じ。
SUBTEST_FILTER=hogehoge carton exec -- perl -Ilib -MTest::Flatten t/MyApp/main.t
また、proveの場合でも、
SUBTEST_FILTER=hogehoge carton exec -- prove -Ilib -MTest::Flatten ./t
って感じで、特定の箇所だけ実行可能。
追記
上記の状態だと、
use Test::More; subtest 'hogehoge' => sub { }; subtest 'get_hogehoge' => sub { }; subtest 'make_hogehoge' => sub { }; subtest 'hogehoge_foo' => sub { };
こんなテストコードの場合、全部動いてしまいます。
正規表現が使えるようなので、
SUBTEST_FILTER='^hogehoge$'
こんな感じですかね。