LoginSignup
0
0

More than 5 years have passed since last update.

www.webopixel.net/php/753.html自分用魚拓

Last updated at Posted at 2016-08-20

www.webopixel.net/php/753.html

PHPUnitでテストしよう。IntelliJ(PHPStorm)でも実行できるようにしてみた
Posted: 2013.05.20 / Category: PHP

そろそろテストとかお勉強しないとなと思ったりしたのでとりあえず PHPUnit を導入して、簡単なコードのテストを書くとこまでやってみます。
ついでにIntelliJ(PHPStorm)でも実行できるように設定してみました。

環境はWindows7でPHPはXAMPPで入っています。
PHP 5.4 / PHPUnit 3.7

PHPUnitのインストール

PHPUnitはPEARからインストールします。
PHPの環境変数が設定していない場合は「C:\xampp\php」で設定しておきます。
管理権限でプロンプト(ターミナル)を起動します。
まずはPEARのアップデート。

pear upgrade PEAR
続いてPHPUnitのインストール。

pear config-set auto_discover 1
pear install pear.phpunit.de/PHPUnit
使ってみる

インストールが終わったので、早速プログラムのテストをしてみましょう。
テストするためのPHPファイルを「Hello.php」という名前で作成します。

Hello.php
?
1
2
3
4
5
6
7
8
9
<?php
class Hello
{
public function getMessage()
{
return "hello world";
}
}
プロンプトで「Hello.php」を作成したディレクトリをカレントにします。

テストコードのひな形を自動作成

テストコードのひな形を自動作成するためのPEARをインストールします。

pear install phpunit/PHPUnit_SkeletonGenerator
インストール完了後次のコマンドを実行します。

phpunit-skelgen --test Hello
「HelloTest.php」というPHPファイルが作成されます。
まずは「PHPUnit/Autoload.php」とテストするファイル「Hello.php」を読み込みます。

HelloTest.php
?
1
2
3
4
<?php
require_once 'PHPUnit/Autoload.php';
require_once 'Hello.php';
ソースの一番下には「Hello.php」で実装した「getMessage」をテストするためのメソッド「testGetMessage」がありますので、下記のようにします。

HelloTest.php
?
1
2
3
4
5
public function testGetMessage()
{
$this->assertEquals("hello world", $this->object->getMessage());
}
「assertEquals」メソッドは2つの引数が等しいことを検証します。
「getMessage」は「hello world」という文字列を返しますので、テストは通るはずです。
下記コマンドでテストを実行します。

phpunit HelloTest
「OK (1 test, 1 assertion)」と表示されればテストは問題なかったということです。

IntelliJ(PHPStorm)でテストできるようにする。

「File」->「Setting」でSettingウィンドウを表示したら「PHP」の項目を選択。
「Interpreter」でPHPを選択します。

「Run」->「Edit Configurations」でClassを下記のようにするか、Directoryを選択します。

あとは「Run」ボタンでテストが実行されます。

これくらいのコードだったら全然大丈夫なのですが、フレームワークとかのテスト書こうと思うといきなり難易度高くなりませんかね。さてどうしたもんでしょ。

参考サイト

PHPUnit Manual
第1回 PHPUnitの概要と導入 | Think IT
http://www.findxfine.com/programming/php/995557148.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0