PHPUnitを使ってユニットテスト
環境
Xubuntu 12.10PHP 5.3.10
PHPUnit 3.7.15
やったこと
PHP5をインストール
$ sudo apt-get install php5 php5-common php5-mysql php5-dev php5-cli php5-gd php5-curl php5-mcrypt
PEAR を インストール
$ sudo apt-get install php-pear
PEAR を 最新版にアップグレード
$ sudo pear upgrade pear
PHPUnit を インストール
$ sudo pear channel-discover pear.phpunit.de $ sudo pear channel-discover components.ez.no $ sudo pear channel-discover pear.symfony.com $ sudo pear install --alldeps phpunit/PHPUnit PHPUnit 3.7 から現行コマンドが廃止されるから、phpunit/PHPUnit_SkeletonGenerator をインストールしろとの事 $ sudo pear install phpunit/PHPUnit_SkeletonGenerator
PHP と PHPUnit の バージョンを確認
$ php -version PHP 5.3.10-1ubuntu3.5 with Suhosin-Patch (cli) (built: Jan 18 2013 23:40:19) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies $ phpunit --version PHPUnit 3.7.15 by Sebastian Bergmann.
とってもカンタンなPHPUnitサンプル1
simpleTest.php
<? class simpleTest extends PHPUnit_Framework_TestCase { public function test_same() { $result = 3; $this->assertSame(3, $result); } public function test_equal() { $result = 4; $this->assertEquals(4, $result); } public function test_true() { $result = 5; $this->assertTrue(5==$result); } public function test_false() { $result = 6; $this->assertFalse(7 == $result); } } ?>
PHPUnitサンプル1 実行結果
$ phpunit simpleTest.php PHPUnit 3.7.14 by Sebastian Bergmann. .... Time: 0 seconds, Memory: 2.25Mb OK (4 tests, 4 assertions)
とってもカンタンなPHPUnitサンプル2
hellp.php
<?php class Message { public function say() { return "Hello"; } } ?>
test.php
<?php //hello.phpを読み込む require 'hello.php'; class MessageTest extends PHPUnit_Framework_TestCase { protected function setUp() { // step1 準備 //Messageクラスをobjectという名前でインスタンス化する //インスタンス名はobjecotではなく、stringでも、textでも、fooでも、hogeでもよかったのだけど、何となくobjectにした $this->object = new Message; } public function test_Message_sayMethod_isHello() { // step2 メソッドや関数の実行 //$resultにobjectインスタンスのsayメソッドが返す値を格納 $result = $this->object->say(); // step3 メッソドや関数の実行結果の検証 //"Hello"と$resultが等しいか調べる $this->assertEquals("Hello", $result); } } #テストが成功したらMessageクラスをインスタンス化したobjectのメソッドsayが返す値が、"Hello"と等しいとassertされたことになる ?>
PHPUnitサンプル2 実行結果
$ phpunit test.php PHPUnit 3.7.14 by Sebastian Bergmann. . Time: 0 seconds, Memory: 2.25Mb OK (1 test, 1 assertion)
注意
テストするクラス名の末尾に "Test" という文字列を付与したものがテストケース名となるようクラス名を定義する検証メソッドの名前は、長くても説明的で明確な名前にする
1つの検証メソッドの中では、1つのアサーションだけにする
検証メソッド名の最初に "test" を付けないとテスト対象にならない。
参考
Installing PHPUnit On Ubuntu 11.04 (Natty Narwhal)
http://www.giocc.com/installing-phpunit-on-ubuntu-11-04-natty-narwhal.html
PHP5.2環境にPHPUnitをインストールする手順
http://nob-log.info/2012/11/02/php52-install-phpunit/
PHPUnit 3.7 japanese
http://www.phpunit.de/manual/3.7/ja/index.html
0 コメント:
コメントを投稿