VSCode+ComposerでPHPUnit9.0を使う
前提
項目 | バージョン |
---|---|
Composer | 1.10.1 |
PHPUnit | 9.0.1 |
Composerはインストールされているものとします。まずはVSCodeを使わずに、ComposerからPHPUnitをインストールします。
C:\sandbox>composer init -q C:\sandbox>composer require --dev phpunit/phpunit
phpunit.bat作成する
php vendor\phpunit\phpunit\phpunit --version
とするのが面倒なのでバッチを作成します。
echo @php "%~dp0vendor\phpunit\phpunit\phpunit" %* > phpunit.cmd
これでphpunit --version
というように実行することができます。
src配下をオートロードする
プロジェクトは以下の構成とします。
C:. └─sandbox プロジェクト ├─src ソース ├─test テストコード └─vendor
テストコードでsrc配下のクラスをrequireしたくないので、src配下をオートロードしておきます。composer.jsonにautoload部分にpsr-4を追加します。
以下では、App\\
は名前空間となります。src/とすることでsrc配下のファイルをプリロードすることができます。
{ "require": {}, "require-dev": { "phpunit/phpunit": "^9.0" }, # add start "autoload": { "psr-4": { "App\\": "src/" } } # add end }
composer.jsonを今回のようにautoloadのみ反映させる場合は、composer dump
コマンドでOKです。
C:\sandbox>composer dump Generating autoload files Generated autoload files
composer dumpautoload
コマンドでもいいみたいです。更新対象は2つです。
vendor\composer\autoload_psr4.php vendor\composer\autoload_static.php
コマンドの初期設定をphpunit.xmlで行う
プロジェクト直下(composer.jsonがある場所)に、phpunit.xmlを作成します。
phpunitのコマンドオプションをxmlに書くことによってデフォルトで指定するオプションを省略することができます。
以下は、phpunit --colors test
と同じ設定になります。
<?xml version="1.0" encoding="UTF-8" ?> <phpunit colors="true"> <testsuites> <testsuite name="Test suite"> <!-- testフォルダ配下のテストファイルをテストする --> <directory>test</directory> </testsuite> </testsuites> </phpunit>
このファイルを設定することで、phpunit
でテストコードが実行されます。
テストメソッド
PHPUnitのテストコードの決まりについてです。
testXXXというようにプレフィックスにtestをつけることでテストメソッドと認識します。または
/** * @test */
をつけるとテストメソッドと認識してくれます。@Testではないことに注意です。
各テストの最初に初期データ投入やインスタンス生成などをしたいと思います。
各テストの最後にはインスタンス破棄などの処理がしたいです。こういった場合に各テストの最初と最後に書くのではなく、デフォルトで用意されたメソッドで処理します。
PHPUnitでは以下4つのメソッドが用意されています。
メソッド | 実行タイミング |
---|---|
setUpBeforeClass | テストクラスの最初 |
tearDownAfterClass | テストクラスの最後 |
setUp | 各テストの最初 |
tearDown | 各テストの最後 |
setUpBeforeClass、tearDownAfterClassはstaticメソッドになります。また、戻り値の:voidを指定する必要があります。
protected function setUp():void { } protected function tearDown():void { } public static function setUpBeforeClass():void { } public static function tearDownAfterClass():void { }
簡単なテストコードです。
VS CodeのPHPUnitプラグインを使う
VS CodeのPHPUnitプラグインを使用してPHPUnitのテストをしてみます。
まずはプラグインをインストールします。
インストールしたら、PHPUnitプラグインの説明ページが開きますので内容を読みます。
Setupですが、環境変数でphp.exeにパスが通っている、composerでPHPUnitをインストールしている場合は設定不要のようです。
Dockerはここでは一旦割愛します。
How to Useを見ます。
Ctrl + Shift + p
で、コマンドパレットが開きますので、「PHPUnit Test」を選択します。
この時、メソッドにカーソルをあてます。
メソッドにカーソルをあてた状態で「PHPUnit Test」を選択すると、そのケースのみ実行されます。
クラス名にカーソルをあてた状態で「PHPUnit Test」を選択すると、そのテストクラスが実行されます。
カーソルをあてない状態で「PHPUnit Test」を選択すると、テストコードを選択することができます。
全てのテストファイルを閉じた状態で「PHPUnit Test」を選択すると、phpunit.xmlに従ってテストが実行されます。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント