PHP on IIS に PHPUnit をインストールする

まず、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 を作成してみる。

<?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 に書き換えるか)。

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 が動きます。

ソースを書き換えて失敗するようにすると、

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 から加わった自動でクラスをロードしてくれる機能だと思います(多分)。

カテゴリー: 開発, xUnit パーマリンク

PHP on IIS に PHPUnit をインストールする への1件のコメント

  1. masuda のコメント:

    PEAR って、PHP のインストールシステムなのね。なるほど。
    Perl の ライブラリ群のイメージを持っていたので、ちょっと勘違いしていた。

コメントは停止中です。