PHPUnitを使う上で知っておきたい用語や知識などについて解説します。データプロバイダ、フィクスチャなど聞きなれない用語があるかもしれませんが、よく活用するので押さえておきましょう。
テストに関する一般知識
TDD(テスト駆動開発)
まずテストを書く開発スタイルです。「赤(失敗)、緑(成功)、リファクタリング(成功を保つ)」の順で開発します。
ユニットテスト
ある入力値で関数を呼び出し、その結果(出力内容や動作)が正しいか判定します。
モック、スタブ
テスト用に用意した代替品です。
次のような時に利用します。
- まだ完成していない部品を使うとき。
 - 「本物」でテストしたくないとき(DBを使いたくない時など)。
 
スタブ
モジュールの代わりとしてコールされ、テストケースにあった戻り値を返します。
モック
あるオブジェクトのメソッドがコールされたのかどうか、さらにどんな引数を渡してコールされたのかを検証するのに利用します。
テスト対象のメソッドを呼び出したとき、テスト対象のメソッド内で
あるオブジェクトのどういったメソッドが、
何回、
どういった引数で呼ばれることを期待しているのかを検証。また、モックは、スタブ機能(下位モジュールの代わりに戻り値を返す)も持ちます。
PHPUnitに関する知識
テストクラス名
テスト対象クラス名Test という名前のクラスにします。例えば、テスト対象クラス名が User の場合、テストクラス名は UserTest とします。
テストメソッド名
テストメソッドであることを示すには、2通りの方法があります。
- メソッド名に 
testという接頭辞をつける。 @testアノテーションを利用する。
アサーション
条件判定用メソッドです。
アサーションメソッドを利用して、以下のような判定を行います。
- メソッドの戻り値の「型」や「内容」の判定
 - メソッドを実行したことによる状態変化(DB、セッション、キャッシュ、ログなど)の判定
 
| アサーションメソッド | 概要 | 
|---|---|
| assertEquals($exp, $act) | $expと$actが等しい(==) | 
| assertSame($exp, $act) | $expと$actが等しい(===) | 
| assertNotEquals($exp, $act) | $expと$actが等しくない | 
| assertContains(mixed $needle, Iterator | array $haystack) | 
| assertArrayHasKey(mixed $key, array $array) | 配列にキーが含まれている | 
| assertTrue($cond) | $condがTRUE | 
| assertFalse($cond) | $condがFALSE | 
| assertNull($var) | $varがNULL | 
| assertNotNull($var) | $varがNULLではない | 
| assertInternalType($type, $act) | $actの型が$typeと一致する | 
| assertInstanceOf($expected, $actual) | $actualが$expectedのインスタンスである | 
この他のアサーションは、下記リンクから確認できます。
⇒ https://phpunit.de/manual/5.5/ja/appendixes.assertions.html
いろいろありますが、使うのは限られるかと思います。
例外テスト
正しく例外がスローされたかどうかを判定します。@expectedExceptionアノテーションなど利用します。
テスト依存性
あるテストの結果をもとに、別のテストを実施することができます。@dependsアノテーションを利用します。
データプロバイダ
複数のテストデータパターンでテストできます。@dataProviderアノテーションを利用します。
フィクスチャ
- setUpメソッド
- テスト実行前に実行されるメソッドです。
 
 - tearDownメソッド
- テスト実行後に実行されるメソッドです。
 
 
リフレクション
プライベートメソッドを外部アクセス可能にしてくれます。ReflectionMethodクラスを利用します。
XML設定ファイル
テスト設定ファイルです。例えば、次のような設定が可能です。
| 設定 | 概要 | 
|---|---|
| colors | 結果を色表示するか指定 | 
| bootstrap | テスト前に実行させるPHPファイルを指定 | 
| stopOnFailure | あるテストに失敗したら残りのテストはキャンセルするか指定 | 
| testsuite | どのディレクトリにテストが存在するかなど指定 | 
この他の設定は、下記リンクから確認できます。
⇒ https://phpunit.de/manual/5.5/ja/appendixes.configuration.html
XML設定ファイルは、phpunitコマンドの--configurationオプションで指定できます。
phpunit --configuration XML設定ファイル--configurationオプションを指定しない場合、カレントディレクトリから phpunit.xml phpunit.xml.dist を順に探し、存在する場合はそれを自動的に読み込みます。
コードカバレッジ
- ユニットテスト実行時、テスト対象プログラムの処理がどの程度実行されたかを表します。
 - Xdebugを有効にする必要があります。なのでテスト実行時間が長くなります。
 - コマンドラインのオプションで出力形式を指定できます。
 - XML設定ファイルにて、コードカバレッジ対象ファイルを指定できます。
 
用語整理
用語関連の整理のため、おおまかなイメージ図を示します。「Xxx」クラスに対するテストクラスとして、「XxxTest」クラスを示してます。

参考
PHPUnitの詳しい使い方については、https://phpunit.de/manual/5.5/ja/index.html で確認できます。