【PHP PHPUnit】PHPUnitを使って簡単な単体テストを行う
参考にした記事
PHPUnitでユニットテスト① 導入編 | Points & Lines
1. アサーション — PHPUnit latest Manual
PHPUnitを触ってみた。
PHPUnitは単体テスト(ユニットテスト)を行うためのフレームワーク。
実際に導入から簡単なテストを行ってみた。
composerが導入されていることを前提としている。
1.PHPUnitのインストール
まずプロジェクトのディレクトリで以下のようなコマンドを実行する。
composer require --dev phpunit/phpunit ^latest
以下のコードを使って、バージョン情報を表示されたらインストール成功。
vendor/bin/phpunit --version
2.テスト対象のクラスを書く
<?php namespace app; class Sample { public function plus100($num) { $num += 100; return $num; } }
オートロードを指定するためにnamespaceを記述している。そのためcomposer.jsonでは以下のように記述しておく。
{ "require-dev": { "phpunit/phpunit": "^9.5" }, "autoload": { "psr-4": { "app\\": "./" } } }
3.テストコードを書く
<?php require_once("vendor/autoload.php"); use PHPUnit\Framework\TestCase; use app\Sample; class SampleTest extends TestCase { public function testplus100_1() { $sample = new Sample(); $result = $sample->plus100(-1); $this->assertGreaterThan(100,$result); } public function testplus100_2() { $sample = new Sample(); $result = $sample->plus100(1); $this->assertGreaterThan(100,$result); } }
今回使ったアサーションメソッドはassertGreaterThan()
4.テスト実行&実行結果
vendor/bin/phpunit SampleTest.php
F. 2 / 2 (100%) Time: 00:00.036, Memory: 4.00 MB There was 1 failure: 1) SampleTest::testplus100_1 Failed asserting that 99 is greater than 100.
Fはアサーションに失敗した際に表示される。.はテストが成功した際に表示される。
3. コマンドラインのテストランナー — PHPUnit latest Manual
There was 1 failureと書いてあるように、1つ失敗があり、
testplus100_1でアサーションに失敗したよう。
今後はもう少し複雑なテストを書いてみたい。