ダウンロード サンプルファイル (1.9 KB)
単体テストメソッドの記述
前項で自動生成されたコードの中に実際のテスト用コードを記述します。
具体的にはテストメソッドの中でassertEquals()のようなアサーションメソッド(後述)を使用して、期待される値と実際の値が等しいことを確かめます。
testGetGoogleMapAddressメソッド内に緯度経度とそれに該当する住所を記述してテストします。
緯度経度、住所情報についてはwikipediaを参照しました。
public function testGetGoogleMapAddress()
{
// 東京タワー
$address = $this->object->getGoogleMapAddress('35.658611', '139.745556');
$this->assertEquals('東京都港区芝公園4丁目2-8', $address['pref'] . $address['city'] . $address['town'] . $address['detail']);
// 三鷹の森ジブリ美術館
$address = $this->object->getGoogleMapAddress('35.696233','139.570431');
$this->assertEquals('東京都三鷹市下連雀1丁目1-83', $address['pref'] . $address['city'] . $address['town'] . $address['detail']);
// 浅草寺
$address = $this->object->getGoogleMapAddress('35.714731', '139.796756');
$this->assertEquals('東京都台東区浅草2丁目3-1', $address['pref'] . $address['city'] . $address['town'] . $address['detail']);
}
アサーションメソッドとはあらかじめ予想される値と、メソッド実行時に得られる値を比較して結果を出力するメソッドです。
代表的なものには以下のものがあります。
| メソッド名 | 概要 |
| assertEquals(オブジェクト, オブジェクト) | 2つのオブジェクトが等しくない場合にエラーを出力する |
| assertNotEquals(オブジェクト, オブジェクト) | 2つのオブジェクトが等しい場合にエラーを出力する |
| assertContains(要素 $needle, オブジェクト $haystack) | $needleが$haystackの要素でない場合にエラーを出力する |
| assertNotContains(要素 $needle, オブジェクト $haystack) | $needleが$haystackの要素である場合にエラーを出力する |
| assertType(型 $expected, 変数 $actual) | 変数$actualの型が$expectedでない場合にエラーを出力する |
| assertNotType(型 $expected, 変数 $actual) | 変数$actualの型が$expectedである場合にエラーを出力する |
| assertSame(オブジェクト, オブジェクト) | 2つのオブジェクトが同じオブジェクトを参照していない場合にエラーを出力する |
| assertNotSame(オブジェクト, オブジェクト) | 2つの変数オブジェクトが同じ型・同じ値である場合にエラーを出力する |
その他のアサ―ションメソッドは非常に多いので詳細はマニュアルを参照してください。
テストの実行
テストの実行はphpunitコマンドで行います。
# phpunit UtilTest.php PHPUnit 3.4.13 by Sebastian Bergmann. . Time: 2 seconds, Memory: 4.25Mb OK (1 test, 3 assertions)
phpunitコマンドの主なオプションは以下のとおりです。
| オプション | 概要 |
| --log-junit ファイル名 | テスト結果ログをjunit形式で出力 |
| --log-tap ファイル名 | テスト結果ログをtap形式で出力 |
| --log-json ファイル名 | テスト結果ログをJSON形式で出力 |
| --coverage-html ディレクトリ名 | コードカバレッジ解析の結果をHTML形式で出力 |
| --coverage-clover ファイル名 | コードカバレッジ解析の結果をXML形式で出力 |
| --skeleton-class | テスト用クラスからテスト対象クラスを生成 |
| --skeleton-test | テスト対象クラスからテスト用クラスを生成 |
| --stop-on-failure | エラーが起きた時点でテストを中断 |
エラーなくテストが実行された場合に「.」が表示されます。
testGetGoogleMapAddress()メソッド内の3つのテストを実行して結果が正しかったことが分かります。
この記事は参考になりましたか?
- 目的に応じて適材適所で使うPHPライブラリ連載記事一覧
-
- PHPで作成する携帯会員サイトの基本
- PHPUnitでできる単体テスト
- PHPで行う動画変換(後編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
