PHPUnitを使って、ユニットテストをしてみようと思います。
で、Junitと比較しやすいように目の前にあった、
「JUnitによるテストファースト開発入門」ISBN 4-7973-2572-0 という本にある、23ページと27ページにある、
SimpleCountTestの例に基づいて、やりたいと思います。
SimpleCountというのは、こういうやつだそうです(その本の23ページ引用)
商品コード"1234"を入力すると文字列"carrot"が出力される
今回は、テストファーストで、まず関数(メソッド)を書いてエラーをだすところまで
なお、このサイト(http://www.1x1.jp/php/)を全面的に参考にしています。
■■ 1.ダウンロードしてくる
http://sourceforge.net/projects/phpunit/から、PHPUnitをダウンロードする。
ダウンロードのところをクリックしていくと、ミラーサイトを選んだりして、最終的には、とってこれる。
tgzの形式なんだけど、保存したら、なぜか、拡張子は、gzになっていた。
この保存したものを「解凍レンジ」で解凍すると、フォルダが出てくる。一番下のフォルダには、
phpunit.php
phpunit_test.php
runtests.php
runtests2.php
stylesheet.css
ChangeLog
README
といったファイルがはいっている
■■ ロリポップでテストするために
で、このPHPUnitは、PHP3,4用である。うちの環境は5。
なんで、ろりぽが、PHPUnit4だった気がしたので、ろりぽにおくった。
ろりぽのホームにこれらのファイルを送り、属性を777にした
(送ったままだと、実行しない。777にしなくてもOKだと思うけど、なんにすれば、えらーにならないか、よくわかんないので、めんどーなので777にしてる。ろりぽおじさんは、「777にしちゃだめ、セキュリティ上」、みたいなことを言ってるので、よいこのみんなは、真似しちゃだめだよ。ろりぽおじさん、ごめんなさい。テスト終わったら消しとくから)
■■ プログラムを作成する
さっきの本の23ページに相当する、テスト内容は、こんなかんじ
<?php require_once("SimpleCount.php"); // 先に、テスト対象を宣言する require_once("phpunit.php"); class SimpleCountTest extends TestCase { /** * コンストラクタ */ function SimpleCountTest($name) { $this->TestCase($name); } /** * 初期処理 */ function setUp() { } //--------- ここから、テストをかくのだ /** * getShohinNameのテスト */ function testGetShohinName() { // 本に書いてあるのを、PHPにしただけ $simple = new SimpleCount(); $data = "1234"; $this->assertEquals("carrot",$simple->getShohinName($data)); } } //-----------------------------------------------------// // 呪文なのだ $suite = new TestSuite; // テストするものを書くのだ $suite->addTest(new SimpleCountTest("testGetShohinName")); // じゅもんなのだ $testRunner = new TestRunner; $testRunner->run($suite); ?> |
(上記中、 < > ¥ は本当は半角)
これをSimpleCountTest.phpという名前で保存する。
で、テストする側、さっきの本の27ページに相当する部分で、
はじめの状態は、こんなかんじ
<?php class SimpleCount { /** * ほんのとおり。にんじん?? * */ function getShohinName($name) { } } ?> |
(上記中、 < > ¥ は本当は半角)
はじめの状態なので、何も書いていない。なので、このまま実行すると、エラーになるはず
で、このファイル名をSimpleCount.phpとして保存した
■■ プログラムを送る
上記のSimpleCountTest.phpとSimpleCount.phpを、さっきのろりぽのホームに送って、属性を777にした。
■■ 実行する
ブラウザから、ろりぽの自分のサイトのSimpleCountTest.phpをみると、こんな感じに見える。

(上記のイメージ中、紫色のところは、実際には、この文字が出るのではなく、自分のホームページのパスが入ります=人によってちがいます)。
で、あとは、SimpleCount.jpgをさっきの本の27ページのように、まじめに書いて、正しい結果にするだけ
だけど、今日は、時間がないので、この続きは、またこんど。