単体テストツールPHPUnitについてのメモです。とくにプライベートなメソッドのテストについてまとめています。
PHPUnit – The PHP Testing Framework
Homebrewでインストール。
$ phpunit ExampleTest // ワーキングディレクトリのExampleTest.phpを実行
$ phpunit -c phpunit.xml // 設定ファイル指定
$ phpunit --group hoge // groupアノテーションを指定したテスト実行
$ phpunit --verbose // 詳細な説明を表示
$ phpunit --coverage-html <dir> // dirへhtml形式のカバレッジ出力
var_dumpで出力できます。
基本はパブリックメソッドのテストでカバーしますが、
プライベートメソッドのテストが必要なときはリフレクションを使います。
テスト対象
namespace \My\Package
class Example {
private examplePrivateMethod($a, $b) {
}
}
テスト
<?php
use \My\Package\Example;
class ExampleTest extends PHPUnit_Framework_TestCase
{
/**
* @group relativePath
*/
public function testExamplePrivateMethod()
$obj = new Example();
$method = new \ReflectionMethod(get_class($obj), 'examplePrivateMethod');
$method->setAccessible(true);
$actual = $method->invoke($obj, '第1引数', '第2引数'); // invokeの第1引数は対象クラスのインスタンス
$expect = '.....';
$this->assertEquals($expect, $actual);
}
}
プライベートメソッドで他のプライベートメソッドの呼び出していても動作します。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。