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 件のコメント:
コメントを投稿