質問

現在のMVCフレームワークアプリケーションの中からPHPUnitを実行しようとすると、次のエラーが発生します。

Fatal error: Cannot redeclare class PHPUnit_Util_FilterIterator in /usr/local/pear/PHPUnit/Util/FilterIterator.php on line 162
.

私はその誤りをいくつかのものの組み合わせに追跡することができました。

$paths = array();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
$paths[] = '/usr/local/pear';
set_include_path(implode(PATH_SEPARATOR, $paths));
.

コメントしたとき

    set_include_path(implode(PATH_SEPARATOR, $paths));
.

PHPUnitはテストを実行します

コメントしたとき

$paths[] = '/usr/local/pear';
.

私は

を手に入れます
Fatal error: require_once(): Failed opening required 'PHPUnit/Framework/TestCase.php' 
.

他のすべてのディレクトリをコメントした場合は、

を保存します
$paths[] = '/usr/local/pear';
.

エラーが発生しません。

実際のテストを実行することができる唯一の方法は、set_include_pathステートメントなしで実行され、個々の単体テストによって呼び出されるすべてのクラスファイルを手動で含めている場合。

任意のアイデア?

編集: __autoload関数と矛盾があるようです。私はまだ問題に対処する方法はまったくありません。

役に立ちましたか?

解決

それが判明したのと同じように、私はそれが実際にうまく機能するのを理解していません...しかしそれはそうするので、結果を投稿します。

$paths[] = get_include_path();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
set_include_path(implode(PATH_SEPARATOR, $paths));
.

そこに行きます。少なくとも、あなたが実際にこの問題を抱えている場合には、次のようにしてください。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top