php でのテストツールとして、単純に出力結果と比較する .phpt 形式というフォーマットがあります。
- PHPT - Test File Layout
- http://qa.php.net/phpt_details.php
以下は php の配布ソースに含まれている tests/basic/001.phpt
です。
--TEST-- Trivial "Hello World" test --FILE-- <?php echo "Hello World"?> --EXPECT-- Hello World
このような .phpt 形式のファイルを pear コマンドを使ってテストできます。
$ pear run-tests tests/basic/001.phpt Running 1 tests PASS Trivial "Hello World" test[tests/basic/001.phpt] TOTAL TIME: 00:00 1 PASSED TESTS 0 SKIPPED TESTS # ディレクトリ指定でまとめて行うこともできます。 $ pear run-tests tests/basic ...
テストに失敗した場合には .phpt
ファイルと同じディレクトリに .diff .exp .log .out .php
という結果ファイルと、カレントディレクトリに run-tests.log
というファイルが作成されます。
$ pear run-tests path/to/fail/001.phpt Running 1 tests FAIL Trivial "Hello World" test[path/to/fail/001.phpt] ... $ ls . run-tests.log $ ls path/to/fail/001.* 001.diff 001.exp 001.log 001.out 001.php 001.phpt
テストをパスするように修正し、再度 run-tests
を実行するとこれらの結果ファイルは削除されます。
つまり .phpt
ファイルと同名のこれらと同じ拡張子のファイルを作成していると、成功時は削除、失敗時は上書きされてしまうので注意しましょう。
EXPECT セクションの記述が面倒ですが、*.diff *.log
を確認しながら、テスト対象のコーディングを行っていき、実装完了後に、*.out
の内容を EXPECT セクションに張り付ければよいです。
カレントディレクトリでテスト実行したのち、期待値との差分を確認するワンライナーです。
$ pear run-tests .; find . -name '*.diff' | xargs more