基本的なPHPUnitのインストール
PHPUnitは単にテストするという目的だけではない。近頃はCIやパッケージ作成の際に品質保証として組み込まれることも多くなった。
PHPUnitはLaravelなんかのフレームワークにも組み込まれており、Laravelならではの使い方というものもある。
しかし、ここではフレームワークなしの基本的な使い方を解説する。Laravel側も基本的なものは変わらないので覚えておくと応用が効く。
-
プロジェクトを作成(任意ディレクトリを作成)
$ mkdir phpunit_demo
-
プロジェクトのディレクトリへ移動
$ cd phpunit_demo
-
テスト対象となるソースコードを配置するディレクトリを適当に作成する。(今回はsrcとする)
$ mkdir src
-
テストケースを配置するディレクトリを適当に作成する。(今回は「test」ディレクトリとする)
$ mkdir test
-
Windows環境だとttyなんとかのエラーがよく出るため、それ防止用に下記コマンドを実行。
$ exec winpty bash
-
composer.pharをダウンロードする
$ php -r "readfile('https://getcomposer.org/installer');" | php
-
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/」はテスト対象となるソースコードのディレクトリを指している。
-
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」ディレクトリである。
-
PHPUnitをインストールする。(phpunit_demoがカレントディレクトリになっている状態で実行)
$ php composer.phar update
phpunit_demoディレクトリ内にvendorディレクトリが作成され、そのなかにPHPUnitと依存モジュールがダウンロード&配置される。
正しくインストールされたかどうかPHPUnitのバージョン確認する。バージョンが表示されたらOK.
php vendor/bin/phpunit --version
-
「autoload.php」を作成する。
php composer.phar dump-autoload
-
テスト対象となるソースコードをsrcディレクトリ内に作成する。
例ではNeko.phpを作成
<?php
namespace App;
class Neko{
public function bark($name){
return $name . 'はニャオーと吠えた';
}
}
-
testディレクトリにテストケース・ファイルを作成。
Nekoクラスのテストケース・ファイル名はNekoTest.phpとなる。語尾にTestが付く。クラス名も同じ。
NekoTest.php
object = new Neko();
}
public function testAdd() {
$this->assertEquals('赤猫はニャオーと吠えた', $this->object->bark('赤猫'));
}
}
-
テスト実行する
php ./vendor/bin/phpunit
「OK (1 test, 1 assertion)」ってな感じのメッセージが表示されたら、テストOK.
エラーがある場合は、エラーメッセージが表示される。
-
終わり。
(っ゚⊿゚)っ あ! → サ-ッ(=^‥^) アカネコ