PHPUnit - user000422/0 GitHub Wiki
基本情報
PHPテストを行うためのフレームワーク
実行時エラーログはphp_errors.log
対象クラスのロジックに「exit」が存在する場合はテストを行えない。(「exit」されないパターンは可能)
よく出てくる単語
単語 | 意味 |
---|---|
expected | 期待結果 |
ディレクトリ構成
/プロジェクトフォルダ
├─ tests
│ └ unit
│ └ sampleTest.php
└─ phpunit.xml
phpunit.xml(設定ファイル)
[対象クラス名]Test.php(テストケース)
※PHPUnit4実績のソース(ひな形)
<?php
require_once('/sample/targetClass.php'); // 対象クラスのパス
// 対象クラス+Testのクラスを作成 「PHPUnit_Framework_TestCase」継承は固定
class targetClassTest extends PHPUnit_Framework_TestCase
{
// テーブルがクリアされるので使用しないこと
//use RefreshDatabase;
// テストメソッド メソッド名は自由
public function testMethod(){
// インスタンス生成(対象クラスのインスタンスを生成)
$targetClass = new targetClass();
// アサーション(第一引数が「期待結果」、第二引数が「実行結果」)
$this->assertEquals($expected, $sample_data);
}
}
(応用)データプロバイダ
コメントのアノテーションは重要 アノテーションを設定したメソッドがデータプロバイダの配列分ループするイメージ
<?php
require_once('/sample/targetClass.php');
class targetClassTest extends PHPUnit_Framework_TestCase
{
// データプロバイダ定義
public function sampleDataProvider(){
return [
'パターン1' => ['1', '2'],
'パターン2' => ['2', '3']
];
}
/**
* @dataProvider sampleDataProvider
*/
// データプロバイダの戻り値が引数に渡される
public function testMethod($num1, $expected){
// インスタンス生成省略
// アサーションで実行する対象メソッドの呼び出しにデータを渡すとデータプロバイダの配列分実行される
$this->assertEquals($expected, $sampleInstance->calcPlus1($num1, $end_date));
}
}
アサーション
// 比較(型は許容)
$this->assertEquals('期待結果', 'テスト結果');
// 部分一致
$this->assertStringContainsString('いうえ', 'あいうえお');
エラー対応
■テスト実行時に「Warning: require_once…」 1.対象クラスの「require_once」で定数を使用している場合はその定数をインクルードするための「require_once」をテストケースの最初に記述する。