PHPUnitでプライベートメソッドをテストする覚書 : PHP

Pocket

単体テストツール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.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。