今さら PHP の DocTest を実践投入してみました。今まで使ってなかったのが残念なくらい、使い易いです。

PHP の DocTest には、いろいろありますが、やはり、Pear のやつを使ってみようと思い、挑戦しました。

PEAR Testing_DocTest のインストール *

以下は、Pear の Testing_DocTest についての情報です。

Pear コマンドでインストールは簡単です。

pear install -f Testing_DocTest

※XAMPPを利用している方は、PEARの設定を正しく行っていないとインストールに失敗する可能性があります。(php config-set test_dir を正しくセットしてください。)

Testing_DocTest の実行の方法 *

そして、DocTest を実行するときはコマンドラインから以下のようにします。以下は、test.php をテストする方法です。

phpdt test.php

DocTestの書き方ですが、一番簡単な書き方は以下のようになります。つまり、/** .. */ のコメントの中にある、<code>から</code>までがPHPのテストコードと期待される結果になります。

<?php
/**
 * <code>
 * // ここにPHPのテストコード
 * echo testfunc("hoge");
 * // expects:
 * // hoge
 * </code>
 */
function testfunc($arg) {
  return $arg;
}

ちなみに、実行結果は以下のように表示されます。

$ phpdt test.php
[PASS]  function testfunc in file "/home/test/test.php"

Total time    : 4.5518 sec.
Passed tests  : 1
Skipped tests : 0
Failed tests  : 0

上のテストコードでは、hoge と標準出力に表示するだけのテストコードです。そして期待される結果は、hoge なので、「expects:」の次の行に hoge と書くだけなのです。

Pearの上記のサイトには、他にもいくつかのサンプルが書かれています。

Pear の Testing_DocTest を使う上で覚えておくべきことは、次の3点だけ

  • コマンドは phpdt
  • /** <code> ... </code> */ の間にテストコードと結果を書く
  • テストコードと期待される結果の区切りは「expects:」であること

他にも、「//doctest:テストの名前」とかフラグとか書けるみたい。

  • rhaco や Maple4 にもDocTestあるよ
    • 調べたときには、rhaco のやつも使いやすそうと思ったのですが、余分なライブラリがなくって、超シンプルなものと思って、Pear にしてみました。とりあえず、リンクと親切な解説を記しておきます。
    • rhaco -- http://rhaco.org/
    • ウノウラボのDocTestの記事
※2011/03/17 リンク切れなど修正しました。