PHPUnitのテストコード雛形の作成(phpunit-skeleton-generator+Eclipse)
「phpunit-skeleton-generator」を利用すると、
クラスに定義されているメソッドのテストソースのスケルトン(空定義)を、
自動で作成する事ができます。
テストの実態は基本的には自分で記述しますが、スケルトン作成だけでも十分便利です。
利用を検討してみてはいかがでしょうか。
概要
PHPUnitのテストコード雛形の作成(phpunit-skeleton-generator+Eclipse)
PHPUnitの「phpunit-skeleton-generator」を利用するには、
Composerを利用した一括インストールが便利です。
以下の手順でインストールを行っています。
Eclipseの「phpunit-skeleton-generator」の利用設定(外部ツール構成)
Eclipseに「phpunit-skeleton-generator」の設定を行うには、
「実行」ー「外部ツール」-「外部ツールの構成」を選択します。
外部ツール構成ウィンドウが開いたら「新規の起動構成」を選択し、
新しく構成を作成します。
作成した起動構成の名前を分かりやすく付け、
下部の項目それぞれに以下のように入力します。
ロケーションはComposerをインストールしたディレクトリ配下の、
phpunit-skeleton-generatorがインストールされているディレクトリの.batファイルを指定します。
例)「C:\composer」へインストールしたなら「\vendor\bin\phpunit-skelgen.bat」までのパス。
その他は以下の通り入力します。
- ロケーション: C:\composer\vendor\bin\phpunit-skelgen.bat
- 作業ディレクトリ: ${workspace_loc}
- 引数: generate-test ${string_prompt:namespace\class} ${selected_resource_loc}
入力が完了したら「適用」をクリックして保存し「閉じる」で完了します。
(参考)2.5 phpunit-skelgenの組み込み|PHPの開発環境を構築する(その4): PHPUnit+MakeGoodを使う | 悠雀堂ブログ
「phpunit-skeleton-generator」の実行(テストソース作成)
「phpunit-skeleton-generator」を実行してテストソースを作成します。
テスト対象とするサンプルプログラム(クラスファイル)は以下のように定義しています。
事前に、このテスト対象を開き対象のクラス名を確認しておきます。
※name spaceの定義がある場合は、name spaceもコピーしておきます。
では、テスト対象のクラスが定義されているファイルを、
PHPエクスプローラで選択した状態で「実行」-「外部ツール」と選択し、
先ほど作成した外部ツールの名前をクリックして実行します。
ダイアログが表示されクラス名の入力が求められます。
先ほどコピーしておいたクラス名を入力します。
「namespace\classname」の形式で入力します。
実行されテスト対象に選択したソースと同じディレクトリに、
「クラス名+Test.php」の名前でファイルが作成されます。
これが、skeleton-generatorに作成されたテスト用のソースになります。
作成されたディレクトリのままでは何がテストソースなのか混在してしまい、
リリース時に間違いの元になりますので、別のフォルダ(テスト用)などに移動しておきます。
テスト用ソースファイルを右クリックして、
「リファクタリング」-「移動」と選択します。
移動先の選択を求められますので、テスト用のフォルダなどを選択します。
ファイルが移動されました。
「phpunit-skeleton-generator」テストファイルの実行
skeleton-generatorが作成したソースをそのまま実行してみます。
テストの実行はテスト用ソースファイルを選択した状態で、
右クリックして「テストの実行」を選択します。
下部のコンソールにエラーがずらっと表示されて正しく実行できていません。
またソースの横にはエラーの箇所に「×」マークが表示されています。
以下のようなエラーが発生した場合は、テスト対象のクラスファイルが、
テスト用ソースから参照できていないことを示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PHPUnit 5.7.27 by Sebastian Bergmann and contributors. Fatal error: Class 'Calculator' not found in C:\Apache2464\htdocs\phpunit\CalculatorTest.php on line 19 Call Stack: 0.0011 266056 1. {main}() C:\eclipse_kepler\plugins\com.piece_framework.makegood.stagehandtestrunner_3.1.1.v201409021510\resources\php\bin\testrunner.php:0 0.0282 1051016 2. Symfony\Component\Console\Application->run() C:\eclipse_kepler\plugins\com.piece_framework.makegood.stagehandtestrunner_3.1.1.v201409021510\resources\php\bin\testrunner.php:55 0.0434 1586344 3. Symfony\Component\Console\Application->doRun() C:\composer\vendor\symfony\console\Application.php:117 0.1075 3268664 4. Symfony\Component\Console\Application->doRunCommand() C:\composer\vendor\symfony\console\Application.php:193 0.1077 3269248 5. Symfony\Component\Console\Command\Command->run() C:\composer\vendor\symfony\console\Application.php:843 0.1097 3280296 6. Stagehand\TestRunner\CLI\TestRunnerApplication\Command\PluginCommand->execute() C:\composer\vendor\symfony\console\Command\Command.php:242 0.1872 5246128 7. Stagehand\TestRunner\Process\TestRunner->run() C:\composer\vendor\piece\stagehand-testrunner\src\CLI\TestRunnerApplication\Command\PluginCommand.php:151 0.2102 6756472 8. Stagehand\TestRunner\Runner\PHPUnitRunner->run() C:\composer\vendor\piece\stagehand-testrunner\src\Process\TestRunner.php:107 0.3887 7957824 9. PHPUnit_TextUI_TestRunner->doRun() C:\composer\vendor\piece\stagehand-testrunner\src\Runner\PHPUnitRunner.php:82 0.3900 7980904 10. PHPUnit_Framework_TestSuite->run() C:\composer\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:517 0.3943 7991616 11. PHPUnit_Framework_TestSuite->run() C:\composer\vendor\phpunit\phpunit\src\Framework\TestSuite.php:733 0.4080 7995912 12. PHPUnit_Framework_TestCase->run() C:\composer\vendor\phpunit\phpunit\src\Framework\TestSuite.php:733 0.4080 7998016 13. PHPUnit_Framework_TestResult->run() C:\composer\vendor\phpunit\phpunit\src\Framework\TestCase.php:868 0.4177 8085624 14. PHPUnit_Framework_TestCase->runBare() C:\composer\vendor\phpunit\phpunit\src\Framework\TestResult.php:686 0.4224 8381192 15. CalculatorTest->setUp() C:\composer\vendor\phpunit\phpunit\src\Framework\TestCase.php:909 |
skeleton-generatorの仕様なのか分かりませんが、
作成時にクラス名の入力まではしているのですが、
対象のファイルの読み込み部分の記述が出力されません。
その為個別に「require_once ‘~’;」などでテスト対象の読み込みを追記します。
その状態で実行すると、エラー表示は消え、
無事実行されますが、実行結果はまだ「Incomplete(未完成)」1件表示になっています。
テストの内容を書いていないので、当然です。
markTestIncomplete()を実行する事で「未完成」であるという状態を示すことができます。
1234 // ここで処理を止め、テストが未完成であるという印をつけます。$this->markTestIncomplete('このテストは、まだ実装されていません。');
タブを切り替えて「MakeGood」タブを選択してみると「エラー:1」と表示されています。
ちなみにこの「MakeGood」タブからもテストの実行ができます。
保存の度に実行させたりすることも可能です。
テスト用のメソッドの中身を修正し、テスト内容を記述します。
テストの記述方法については、以下のリファレンスを参考に記述します。
(参考)PHPUnit マニュアル – 第2章 PHPUnit 用のテストの書き方
そのまま実行するとコンソールに「OK」出力が確認できます。
「MakeGood」タブではグリーンバー表示になり「成功:1」と表示されます。
このようにして作成済みのクラスから、
テストの対象のスケルトンを自動的に作成してテストのひな形とすることができます。
またクラス側の記述段階からコメント部分でテストパターンを定義しておくと、
自動作成されるテストパターンを増やすことができます。
詳細は以下でご紹介しています。
当サイト内のコンテンツおよび画像を含むすべてにおいて、管理人アルゴリズンが著作権を保持しております。
当サイトでご紹介しております写真等につきましては著作権の放棄はしませんが、
ライセンスフリーでご利用いただいて構いません。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
サイト内コンテンツを引用される際には、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
公開日: