0

現在の 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 関数と競合しているようです。私はまだ問題に対処する方法がよくわかりません。

4

1 に答える 1

0

結局のところ、これが実際に機能する理由はわかりません...しかし、機能するので、結果を投稿します。

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

では、どうぞ。少なくとも、実際にこの問題も抱えている場合は、そこに行きます:)

于 2010-07-23T17:56:30.593 に答える