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$'
こんな感じですかね。