いまどきのPHPUnitインストールはComposer使っていると思います。まぁ、いまどきなCakePHPならそれで問題ないです。ただ、微妙に古いCakePHPを使っているとPHPUnitが入ってないよって判定食らって test.php にアクセスしてもダメだったりします。(autoload自体はされているので使えるはずだけど)

Composer経由PHPUnitへの正式対応はCakePHP2.3.2以降から

PHPUnitがあるかどうか判定するメソッド loadTestFramework の履歴を見るとここで対応しているっぽいです。

Be compatible with PHPUnit installed with composer. · 386be52 · cakephp/cakephp · GitHub

lib/Cake/TestSuite/CakeTestSuiteDispatcher.php

<?php
// snip
public function loadTestFramework() {
    if (class_exists('PHPUnit_Framework_TestCase')) {
        return true;
    }
    // snip
}

これでautoloadされているPHPUnitが判定されます。まぁ、CakePHP自体をアップデートできるような環境の人は素直にアップデートした方がいいと思います。

おまけ:PHPUnit Composerインストールメモ

composer.json

{
    "require-dev": {
        "phpunit/phpunit": "3.7.*"
    },
    "config": {
        "vendor-dir": "htdocs/app/Vendor/Composer"
    }
}

app/Config/bootstrap.php

<?php
// snip
App::import('Vendor', 'Composer'.DS.'autoload');
$ composer install

これだけ。vendor-dir でインストール場所を指定できる。



blog comments powered by Disqus