2

Ubuntu マシンに PHPUnit をインストールする前は、zf.sh がすべて正しくセットアップされていると思っていました。問題なく新しいプロジェクトを作成できました。現在、PHPUnit をインストールしてから、すべてが正しく機能していません。

テスト プロジェクトを作成しようとすると、次のようになります。

Fatal error: Cannot redeclare class PHPUnit_Framework_TestSuite_DataProvider in /usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php on line 64

Call Stack:
0.0011     110200   1. {main}() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:0
0.0011     110320   2. zf_main() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:23
0.0113     685448   3. zf_run() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:36
0.0113     685568   4. Zend_Tool_Framework_Client_Console::main() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/bin/zf.php:214
0.0114     686044   5. Zend_Tool_Framework_Client_Abstract->dispatch() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Console.php:96
0.0114     686164   6. Zend_Tool_Framework_Client_Abstract->initialize() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Abstract.php:209
0.0152     866128   7. Zend_Tool_Framework_Loader_Abstract->load() /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Client/Abstract.php:118
0.4374    2729116   8. include_once('/usr/share/php/PHPUnit/Framework/TestSuite/DataProvider.php') /opt/ZendFramework/ZendFramework-1.9.3PL1-minimal/library/Zend/Tool/Framework/Loader/Abstract.php:90

再び機能させるにはどうすればよいですか?

更新:これが起こっている理由を理解していると思います。PHPUnit 3.4.0 には、Zend Framework 1.9.3 と同じ名前のクラスがあります。どうやらそれは既知の問題です。しかし、Zend_Tool を再び使用できるようにするには、どうすればこれを回避できますか?? PHPUnit をダウングレードできますか? それで問題は解決しますか?

更新: このチュートリアルでは、差分パッチのインストールについて言及しています。

4

2 に答える 2

2

一時的な回避策を見つけました:

  • PHPUnit/Framework.php の 70 行目付近を編集します。

    require 'PHPUnit/Framework/TestSuite/DataProvider.php';
    
  • への変更:

    require_once 'PHPUnit/Framework/TestSuite/DataProvider.php';
    

これはおそらく長期的な修正ではありませんが、当面の症状を解決します。


2009 年11 月 20 日更新: この問題を解決すると主張する ZF 1.9 ブランチへのコミットを見たところです。おそらく、修正は次のポイント リリース (1.9.6) とその後のマイナー リリース (1.10.0 以降) で行われる予定です。

于 2009-10-24T01:08:54.347 に答える
0

サードパーティのコードを変更する必要のない別の解決策は、PHPUnit フォルダーを外部の場所にコピーし、include_path代わりに新しい場所へのシンボリック リンクを作成することです。

この問題の詳細については、こちらを参照してください: Zend_Tool で PHPUnit がトラブルを起こす

于 2009-11-13T02:16:10.943 に答える