PHPUnitの履歴
PHPUnit2の頃はスケルトンが汚かったり、パスの指定がめんどくさかったりで、こんなん使うなら自作した方がいいわー、と自分で作ってたけど、PHPUnit3はすっごい使いやすくなってた!Zendも使ってるし僕も使います。
PHPUnit3 マニュアル
http://www.phpunit.de/manual/3.3/ja/index.html
解説
http://php.nice-777.com/PHPUnit/index.html
2.3のマニュアル
http://www.m-takagi.org/docs/php/pocket_guide/2.3/ja/index.h...
インストール
$ pear channel-discover pear.phpunit.de $ pear install phpunit/PHPUnit
Class %s could not be found in %s.
TestCaseのサブクラス使ってると出るときがある。
これはTestCaseクラスの自動判別にサブクラスをロードしようとしているから。→PHPUnit_Runner_StandardTestSuiteLoader::load
$ phpunit HogeTest path/to/HogeTest.php
このようにクラス名とファイル名を指定すればOK。
例外のテスト
http://www.phpunit.de/manual/3.3/ja/writing-tests-for-phpuni...
expectedExceptionアノテーションを使う。
<?php require_once 'PHPUnit/Framework.php'; class ExceptionTest extends PHPUnit_Framework_TestCase { /** * @expectedException InvalidArgumentException */ public function testException() { } } ?>
コードカバレッジ
http://www.phpunit.de/manual/3.4/ja/code-coverage-analysis.h...
phpunit --coverage-html ./report BankAccountTest
@coversアノテーションでカバーするメソッドなどを限定できる
@codeCoverageIgnoreStart から @codeCoverageIgnoreEndまでは無視できる
assert
/** * @assert (0, 0) == 0 */ function add($a, $b){ }