.. _extending-phpunit: ============== PHPUnit の拡張 ============== テストを書きやすくする、あるいはテストの実行結果の表示方法を変更するなど、 PHPUnit はさまざまな方法で拡張することができます。 PHPUnit を拡張するための第一歩をここで説明します。 .. _extending-phpunit.PHPUnit_Framework_TestCase: PHPUnit\\Framework\\TestCase のサブクラスの作成 ############################################### ``PHPUnit\Framework\TestCase`` を継承した抽象サブクラスにカスタムアサーションやユーティリティメソッドを書き、 そのクラスをさらに継承してテストクラスを作成します。 これが、PHPUnit を拡張するための一番簡単な方法です。 .. _extending-phpunit.custom-assertions: カスタムアサーションの作成 ########################## カスタムアサーションを作成するときには、PHPUnit 自体のアサーションの実装方法を真似るのがおすすめです。 :numref:`extending-phpunit.examples.Assert.php` を見ればわかるとおり、 ``assertTrue()`` メソッドは ``isTrue()`` および ``assertThat()`` メソッドのラッパーです。 ``isTrue()`` が matcher オブジェクトを作り、それを ``assertThat()`` に渡して評価しています。 .. code-block:: php :caption: PHPUnit\\Framework\\Assert クラスの assertTrue() および isTrue() メソッド :name: extending-phpunit.examples.Assert.php config_value_1 = $config_1; $this->config_value_2 = $config_2; } public function executeBeforeFirstTest(): void { if (strlen($this->config_value_1) { echo 'Testing with configuration value: ' . $this->config_value_1; } } public function executeAfterLastTest(): void { if ($this->config_value_2 > 10) { echo 'Second config value is OK!'; } } } XML から TestRunner の拡張の設定値を受け渡す場合は、 ``extensions`` セクションを利用します。 ``extensions`` セクションは :numref:`extending-phpunit.examples.TestRunnerConfigurableExtensionConfig` の例のように、 設定値を記載する必要があります: .. code-block:: xml :caption: TestRunner Extension configuration :name: extending-phpunit.examples.TestRunnerConfigurableExtensionConfig Hello world! 15 ``arguments`` の設定方法の詳細については、 :ref:`appendixes.configuration.extensions.extension.arguments` を参照してください。 注意: 全ての設定値が必ず設定されるとは限りません。 TestRunner の拡張を作成するときは、設定値が設定されていない場合にデフォルト値を利用して動作する、 もしくは自身を無効化するなど、異常が発生しないように取り計らってください。