本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはakiymこと秋山卓巳さんで,
本稿のサンプルコードは,
Perlでのテスト
Perlではテストを書く際に,Test::More
というモジュールが広く使われています。これは,
本稿のテーマであるTest2は,Test::More
などのバックエンドとして使われているTest::Builder
を置き換えるべく開発されているテスティングフレームワークです。2015年ごろよりChad Granum氏によって作られています。
- 注1)
- Perlでの基本的なテストの方法に関しては,
本連載第36回 「Perlのテストモジュールの使い方・ 作り方―Test::More, 」Test::Builder, Test::Stream, そしてPerl 6 を参照してください。
Test::Builderの問題点
Test::Builder
は,
Test::Builder
の問題として,Test::Builder
の関数を直接上書きするモンキーパッチによる対応でしか行えない状況でした。
この問題を解決するため,
ちなみに,Test::Builder
は今後どうなるのでしょうか。メンテナンスされないまま,Test::Builder
の内部ではTest2のAPIを呼び出すように書きなおされており,
Test2にすると変わること
Test2は,Test::Builder
やTest::More
が含まれるTest-Simple
ディストリビューションのバージョン1.
気になるのは,Test::More
をはじめとするTest::Builder
を使った既存のテストモジュールが壊れることがないように,Test::Builder
をモンキーパッチによって拡張していた場合には正しく動作しないことがあります。また,Test2::Transion
を参照してください。
Test2::V0を使ったテスト
ここからは,Test2::V0
を使ったテストを紹介します。Test2::V0はTest2
の作者によって作られた,Test2-Suite
ディストリビューションに含まれるモジュールです。Test2はフレームワークであるため基本的な機能しか提供されていませんが,Test2::V0
では一歩踏み込んだ機能が実装されています。Test::More
で提供されるテスト関数が使えるのはもちろんのこと,
まずはcpanm
コマンドにより必要なモジュールをインストールします。Test2::V0
をインストールすると,Test-Simple
,Test2-Suite
ディストリビューションに含まれるモジュールも一緒にインストールされます。
$ cpanm Test2::V0
なお,
use Test2::V0
と書くことで,
実際にビルトイン関数の動作を確かめる単純なテストを書いてみます。ここでは,Test2::V0
のo
k関数を使って,
ucfirst.
use Test2::V0;
ok ucfirst('foo') eq 'Foo',
'先頭の文字がuppercaseになっている';
ok uc('foo') ne 'foo', 'fooとは一致しない';
done_testing;
※ これ以降に登場するコードでは,use Test2::V0;
は省略します
テストを実行すると次の結果が出力され,
ucfirst.
$ perl ucfirst.t
# Seeded srand with seed '20180625' from local date.
ok 1 - 先頭の文字がuppercaseになっている
ok 2 - fooとは一致しない
1..2