somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【PHPUnit】データプロバイダー使ってみた

PHPUnitアノテーションの1つであるデータプロバイダーを使ってみました。

テストの題材

tekkoc'blog 10分で出来ないと恥しいプログラムに挑戦してみた(Haskellで)です。

データプロバイダー

Ustream.tv: ユーザー cognitom: 8時間耐久PHPUnit - 3/3, by 安藤 祐介. その他で紹介されていました。PHPUnitのマニュアルに書いてあるようなので、詳細はそちらを見るといいでしょう。

テストするべきデータの一覧をテストの実装とは別の場所に書けるため、テストの見通しが良くなります。今回は分離できることを分かりやすくするためにひとつのテストメソッドですべてのテストを行っています。テストメソッドで何をしたいかが分からないので、用途ごとにメソッドを分割するべきか悩みました。データにコメントで書くのもありだと思います。

テストの実装

以下のようにしました。試すべきデータがまとまっているのでテストで行いたいことが良く分かります。

実装の実装

以下のように実装しました。array_fillでまず初期化しています。受け取るカードは半角数字しか来ない想定なので、substrで処理しています。漢数字などを許容する場合、mb系を使うでしょう。