MacにPHPUnit(3.7)を入れて試してみた
こんにちは。この前、コーヒーを飲むベストなタイミングを先輩に話したらウザがられたきたけーです。
今日は故あってPHPUnitを試しにMacにいれていました。PHPUnitは機能が豊富だったり、設定ファイルをXMLで書くのが面倒な印象が...。小さいところから始めたいので最小限の導入と使い方を紹介します。
そもそも僕はMacにphpが入っていなかったので、そこから。homebrewでphpを入れます。
導入手順
brew install php53 # なんで5.3なの?とかはツッコまないでください chmod -R ug+w /usr/local/Cellar/php53/5.3.27/lib/php pear config-set php_ini /usr/local/etc/php/5.3/php.ini brew install php53-xdebug pear channel-discover pear.phpunit.de pear channel-discover pear.symfony.com pear install pear.phpunit.de/PHPUnit
とりあえずつかってみる
/usr/local/Cellar/php53/5.3.27/bin
にphpunit
が設置されているので、適当に/usr/local/Cellar/php53/5.3.27/bin
をPATHに追加しておくとよいでしょう。
ありがちな簡単なサンプルを作成します。
<?php require_once 'PHPUnit/Framework/TestCase.php'; class ArrayTest extends PHPUnit_Framework_TestCase { public function testNewArrayIsEmpty() { // 配列を作成します。 $fixture = array(); // 配列のサイズは 0 です。 $this->assertEquals(0, sizeof($fixture)); } /** * メソッド名がtestで始まっていないが,「@test」 * アノテーションを使用していることに注意 * * @test */ public function arrayContainsAnElementTest() { // 配列を作成します。 $fixture = array(); // 配列にひとつの要素を追加します。 $fixture[] = 'Element'; // 配列のサイズは 1 です。 $this->assertEquals(1, sizeof($fixture)); } }
このファイルをArrayTest.php
という名前で保存しましょう。テストを実行する場合は以下のコマンドを実行します。
phpunit --colors ArrayTest.php
複数のテストファイルを対象にテストを実行したいときはどうすんの?
ドキュメントに色々な方法が書かれていますが、適当なディレクトリに設置して、そのディレクトリを対象にテストを実行するのがお手軽でしょう。
test
というディレクトリを作成して、ディレクトリにHogeTest.php
とFooTest.php
といったテストファイルを設置します(testの中にディレクトリがある場合は再帰的にテストファイルを探します)。この場合は以下のようにコマンドを実行します。
phpunit --colors test
注意!
単純に複数のファイルを引数に指定してもひとつのファイルしか実行されません。例えば、下のコマンドはダメです。
phpunit --colors *Test.php
「次はなんだ?」
スタブとかモックの機能もあるみたいなので次回はこれを紹介します。