PHPUnitを使う(初期セットアップとかんたんな使い方)
導入から簡単なテストコードの実行までの手順のまとめ
セットアップ
composerを使ってインストール$ composer global require "phpunit/phpunit:*"
$ ~/.composer/vendor/bin/phpunit --version PHPUnit 7.5.17 by Sebastian Bergmann and contributors.
インストールされるディレクトリ
cd ~/.composer/vendor/phpunit/phpunit
テストコードの書き方
ここでは名前を保持するUserクラスのテストコードを書いてみるテスト対象のモジュール
User.php
<?php class User { public $name; public function getName() { return (string)$this->name; } }
テストコード例
UserTest.php
<?php require('TestCase.php'); require('User.php'); use PHPUnit\Framework\TestCase; class UserTest extends TestCase { public function testName() { $params = [ [null, ''], ['', ''], ['Name', 'Name'], ]; foreach ($params as $param) { $user = new User(); $user->name = $param[0]; $name = $user->getName(); $this->assertIsString($name); $this->assertSame($param[1], $name); } } }
- TestCaseクラスを継承する(場所は以下)
~/.composer/vendor/phpunit/phpunit/src/Framework/TestCase.php - testXXXXというメソッドを用意して、その中にテストコードを書く
- アサーションメソッドで処理結果を判定する
アサーションメソッドについて
判定に用いるassertXXXメソッドは様々な判定が可能で、以下にまとめられている。
https://phpunit.readthedocs.io/ja/latest/assertions.html
- TestCaseクラスを継承する(場所は以下)
テスト実施
OKの場合 (失敗0)
$ ~/.composer/vendor/bin/phpunit UserTest PHPUnit 7.5.17 by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: 53 ms, Memory: 4.00 MB OK (1 test, 6 assertions)
NGの場合 (失敗あり)
テストコードの [null, ''] を [null, null] にする。
(nullの場合はnullをそのまま返すのが正と仮定)
$ ~/.composer/vendor/bin/phpunit UserTest PHPUnit 7.5.17 by Sebastian Bergmann and contributors. F 1 / 1 (100%) Time: 54 ms, Memory: 4.00 MB There was 1 failure: 1) UserTest::testName Failed asserting that '' is identical to null. ~/phpunit/UserTest.php:20 FAILURES! Tests: 1, Assertions: 2, Failures: 1.
String型かどうかの判定でエラーとなる
コメント
コメントを投稿