Happy Testing Perl

第1回 Perlにおけるテストの概要/TAPとは?

この記事を読むのに必要な時間:およそ 2 分

TAP

Test::Harness はテストの結果をとりまとめてくれるわけですが,どうやってまとめているのでしょうか。その秘密はTAPにあります。

TAPは

1..1
ok 1

のような出力を出すというすごく単純なプロトコルです。最初の行が,何回テストをするかの計画を表していて,それ以後はテストの結果です。 成功なら「ok⁠⁠,失敗なら「not ok」と表示するだけの単純さです。 この*シンプルさ*というのが重要です。これだけシンプルなので,他のプログラミング言語との連携も簡単です。実際に Perl以外のプログラミング言語でTAP形式でテスト結果を出力するバインディングがいろいろあります。

C言語ならlibtapというものがあります。

PythonならPyTAPがあります。

PHPにもSimpleTestのTAP拡張があります。他にもあります。

それぞれのライブラリはわずか数十行程度で記述されています。数十行で表現できるのだから,どうみてもシンプルなプロトコルです。本当にありがとうございました。

プロトコルの詳細は仕様書を読むと良いでしょう。

Test::More

Test::Simpleはシンプルでたいへんすばらしいものなのですが,シンプルすぎて実践的ではないです。もっと機能が欲しいです。よって,Perl MongerはTest::Moreを使います。

use Test::More tests => 2;
ok(1+1==2);
is 1+1, 2;

okはTest::Simpleと同じように使えます。さらにいくつかの便利な機能が追加されています。

is($x, $y)$xが$yと等しいか
like($got, qr/expected/)正規表現にマッチしているか
cmp_ok($got, '<', $expected)比較
is_deeply($got, $expected)ネストした構造のデータが等しいかどうか

この他にもいくつかの便利な機能があります。 この他の機能に関しては氷魚さんがTest::Moreのドキュメントを日本語訳してくれているので,下記の URL から参照してみてください。

というわけで今回は

  • perl におけるテストの重視され具合
  • 一番基本的なテスト用モジュールTest::Simple
  • prove
  • TAP
  • Test::More

についてお話しました。次回以後はより具体的な内容に入っていきます。

Happy testing!

著者プロフィール

松野徳大(まつのとくひろ)

株式会社モバイルファクトリー システム開発部所属。携帯向けアフィリエイトサービスの開発運用,PodCastingサービスの開発運用,ブログ広告システムの開発運用を経て,ワッサーの開発を行った。フレームワーク関連の技術に興味があり,日本で最初にRailsによるオープンソースの掲示板システムイナモデレーダー6を開発公開した。

ブログはhttp://d.hatena.ne.jp/tokuhirom/など。