基本的なPHPUnitのインストール

PHPUnitは単にテストするという目的だけではない。近頃はCIやパッケージ作成の際に品質保証として組み込まれることも多くなった。
PHPUnitはLaravelなんかのフレームワークにも組み込まれており、Laravelならではの使い方というものもある。
しかし、ここではフレームワークなしの基本的な使い方を解説する。Laravel側も基本的なものは変わらないので覚えておくと応用が効く。

  1. プロジェクトを作成(任意ディレクトリを作成)
    $ mkdir phpunit_demo
  2. プロジェクトのディレクトリへ移動
    $ cd phpunit_demo
  3. テスト対象となるソースコードを配置するディレクトリを適当に作成する。(今回はsrcとする)
    $ mkdir src
  4. テストケースを配置するディレクトリを適当に作成する。(今回は「test」ディレクトリとする)
    $ mkdir test
  5. Windows環境だとttyなんとかのエラーがよく出るため、それ防止用に下記コマンドを実行。
    $ exec winpty bash
  6. composer.pharをダウンロードする
    $ php -r "readfile('https://getcomposer.org/installer');" | php
  7. composer.jsonをテキストエディタで空作成し、下記を記述する。(phpunit_demoディレクトリ内にて作成)
    {
    	"require-dev" : {
    		"phpunit/phpunit" : "^9.0"
    	},
    	"autoload" : {
    		"psr-4" : {
    			"App\\" : "src/"
    		}
    	}
    }
    			
    「"phpunit/phpunit" : "^9.0"」はphpunitバージョン9以上をインストール指定している。
    「"App\\" : "src/"」の「App\\」はPHPのクラスファイルに付ける名前空間こと、「src/」はテスト対象となるソースコードのディレクトリを指している。
  8. phpunit.xmlをテキストエディタで空作成し、下記を記述する。
    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
             bootstrap="vendor/autoload.php"
             colors="true"
    >
        <testsuites>
            <testsuite name="Unit">
                <directory suffix="Test.php">./test</directory>
            </testsuite>
        </testsuites>
    </phpunit>
    			
    「./test」は上記で作成したテストケースの配置先である「test」ディレクトリである。
  9. PHPUnitをインストールする。(phpunit_demoがカレントディレクトリになっている状態で実行)
    $ php composer.phar update
    phpunit_demoディレクトリ内にvendorディレクトリが作成され、そのなかにPHPUnitと依存モジュールがダウンロード&配置される。

    正しくインストールされたかどうかPHPUnitのバージョン確認する。バージョンが表示されたらOK.
    php vendor/bin/phpunit --version
  10. 「autoload.php」を作成する。
    php composer.phar dump-autoload
  11. テスト対象となるソースコードをsrcディレクトリ内に作成する。 例ではNeko.phpを作成
    <?php
    namespace App;
    
    class Neko{
        public function bark($name){
            return $name . 'はニャオーと吠えた';
        }
    }
    			
  12. testディレクトリにテストケース・ファイルを作成。
    Nekoクラスのテストケース・ファイル名はNekoTest.phpとなる。語尾にTestが付く。クラス名も同じ。 NekoTest.php
    object = new Neko();
        }
        
        public function testAdd() {
            $this->assertEquals('赤猫はニャオーと吠えた', $this->object->bark('赤猫'));
        }
    
    }
    			
  13. テスト実行する
    php ./vendor/bin/phpunit
    「OK (1 test, 1 assertion)」ってな感じのメッセージが表示されたら、テストOK.
    エラーがある場合は、エラーメッセージが表示される。

  14. 終わり。
    (っ゚⊿゚)っ あ! → サ-ッ(=^‥^) アカネコ