page_adsence

2011年5月30日月曜日

PHPUnit3の使い方

前回に引き続きPHPUnit3に関してのメモ。

早速PHPUnit3を使ってみた。

$ vi ArrayTest.php
<?php
require_once 'PHPUnit/Framework.php';

class ArrayTest extends PHPUnit_Framework_TestCase
{
    public function testNewArrayIsEmpty()
    {
        // 配列を作成します。
        $arr= array();

        // 配列のサイズは 0 です。
        $this->assertEquals(0, count($arr));
    }

    /**
     * メソッド名がtestで始まっていないが,「@test」
     * アノテーションを使用していることに注意
     *
     * @test
     */
    public function arrayContainsAnElementTest()
    {
        // 配列を作成します。
        $arr= array();
 
        // 配列にひとつの要素を追加します。
        $arr[] = 'hoge';
 
        // 配列のサイズは 1 です。
        $this->assertEquals(1, count($arr));
    }
}

んで、保存してテストしてみる。
$ phpunit ArrayTest
PHP Notice:  Please no longer include "PHPUnit/Framework.php". in /usr/share/pear/PHPUnit/Framework.php on line 50
PHPUnit 3.5.13 by Sebastian Bergmann.

..

Time: 1 second, Memory: 3.25Mb

OK (2 tests, 2 assertions)

テスト自体に問題はなさそうだけど、PHP Noticeが出てる…。
なんでだろうと思って調べてみたら、Framework.phpからAutoload.phpに変ったらしい。
「Framework.php」をrequireしても動くが、上記のようにNoticeが出る。
Noticeが出てるのもいやなので、「require_once 'PHPUnit/Framework.php';」→「require_once 'PHPUnit/Autoload.php';」に書き換えてやる。

$ vi ArrayTest.php
<?php
require_once 'PHPUnit/Framework.php';
               ↓
require_once 'PHPUnit/Autoload.php';

class ArrayTest extends PHPUnit_Framework_TestCase
{
    public function testNewArrayIsEmpty()
    {
        // 配列を作成します。
        $arr= array();

        // 配列のサイズは 0 です。
        $this->assertEquals(0, count($arr));
    }

    /**
     * メソッド名がtestで始まっていないが,「@test」
     * アノテーションを使用していることに注意
     *
     * @test
     */
    public function arrayContainsAnElementTest()
    {
        // 配列を作成します。
        $arr= array();
 
        // 配列にひとつの要素を追加します。
        $arr[] = 'hoge';
 
        // 配列のサイズは 1 です。
        $this->assertEquals(1, count($arr));
    }
}

$ phpunit ArrayTest
PHPUnit 3.5.13 by Sebastian Bergmann.

..

Time: 1 second, Memory: 3.25Mb

OK (2 tests, 2 assertions)

するとNoticeが出なくなる。
これで気持ちよく使えそうだ。