まず、pear ってのが何者か分からずに苦労したのでメモ。
私の場合、PHP on IIS のインストール先が C:\PHP5.3 なのでコマンドプロンプトで移動。
その後、pear のアップデート。
# PHPUnit を入れるためには、PEAR 1.9.1 が必要なんですが、手元のは PEAR 1.9.0 なので駄目らしい。
windowsにPHPunit入れる – これでも…
http://d.hatena.ne.jp/aqua1127/20101013/1286948514
のあたりを参考にして、
go-pear channel-update pear.php.net
ここで、system|local と聞かれるので local にする。system にすると、c:\windows\pear.ini を作ろうとして失敗するので、local にして、PHPのインストール先 c:\PHP5.3 に pear.ini を作るようにする。
pear upgrade pear
でアップデート。接続にひどく時間がかかるけど、しばらく経つと繋がる。
お次は、phpunit 本体
go-pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
でインストール、install 時に随分待たされるけど、しばらく経つと繋がる。
最後に、install failed なんてメッセージが出たら、適宜インストール…なんですが、よくわからん。
phpunit/DbUnit requires package “channel://pear.symfony-project.com/YAML” (version >= 1.0.2)
な形でエラーが出ると、
go-pear channel-discover pear.symfony-project.com
pear install symfony/YAML
な風にインストールするらしいのですが、パッケージ名はどうやって知るのだろうか?
# ちなみに、symfony/YAML は c:\php5 に入れようとして、c:\php5.3 を見てくれない(多分、ピリオドが邪魔をしている)。なので、一度、c:\php5 フォルダを作ってコピーしました。
後は、よくわからないけど
go-pear channel-discover components.ez.no
pear install components.ez.no/ConsoleTools
をインストールしました。
で、再び
go-pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
とするとインストール完了。windows 版の場合は
c:\php5.3\phpunit.bat が作成されます(c:\php5.3 のところは各自のインストール先で)
きちんとインストールできたかどうか、試してみる。
PHPUnitのテスト作成と実行
http://php.nice-777.com/PHPUnit/start.html
を読んで ArrayTest.php を作成してみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php // require_once 'PHPUnit/Framework.php'; class ArrayTest extends PHPUnit_Framework_TestCase { public function testNewArrayIsEmpty() { // Create the Array fixture. $fixture = array (); // Assert that the size of the Array fixture is 0. $this ->assertEquals(0, sizeof( $fixture )); } public function testArrayContainsAnElement() { // Create the Array fixture. $fixture = array (); // Add an element to the Array fixture. $fixture [] = 'Element' ; // Assert that the size of the Array fixture is 1. $this ->assertEquals(1, sizeof( $fixture )); } } ?> |
どうやら、先頭の PHPUnit/Framework.php はいらないようです。自動的にインポートされます。
あと、phpunit.bat の設定が悪くて php.exe の起動が.\php.exeになっています。
なので、環境変数 PHPBIN に c:\php5.3\php.exe を設定してやります(あるいはパスを通して、php.exe に書き換えるか)。
1 2 3 4 5 6 7 8 9 10 | D:\work\blog\src\phpunit>phpunit ArrayTest PHPUnit 3.5.11 by Sebastian Bergmann. .. Time: 1 second, Memory: 3.00Mb OK (2 tests, 2 assertions) D:\work\blog\src\phpunit> |
そうすると、めでたく PHPUnit が動きます。
ソースを書き換えて失敗するようにすると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | D:\work\blog\src\phpunit>phpunit ArrayTest PHPUnit 3.5.11 by Sebastian Bergmann. .F Time: 0 seconds, Memory: 3.00Mb There was 1 failure: 1) ArrayTest::testArrayContainsAnElement Failed asserting that <integer:1> matches expected <integer:2>. D:\work\blog\src\phpunit\ArrayTest.php:24 FAILURES! Tests: 2, Assertions: 2, Failures: 1. D:\work\blog\src\phpunit> |
ちゃんと失敗するので大丈夫そうですね。
~~
余談ですが、
class ArrayTest extends PHPUnit_Framework_TestCase
の継承のところ、このファイル名がちょうど
PEAR/PHPUnit/Framework/TestCase.php
に対応しているのですね。PHP5 から加わった自動でクラスをロードしてくれる機能だと思います(多分)。
PEAR って、PHP のインストールシステムなのね。なるほど。
Perl の ライブラリ群のイメージを持っていたので、ちょっと勘違いしていた。