2011-11-13 21 views
1

私はZend Frameworkの単体テストについて学んでいます。私はPHPunitをインストールしました(途中でいくつかの問題はありません)。PHPunitのZendフレームワーク設定

は、私はまた、正常に動作し、正常に私はちょうど使用し、PHPUnitのを理解し始めたいなどDB

に書き込み、単純なのZend /ドクトリン2スケルトンを作成しているが、それは奇妙なエラーを与えています。私は絶対に何もしない空のIndexControllerを持っています。私はそれが存在すると主張したい。 PHPunitはBootstrapに関する膨大なエラーのリストを投げますが、実際にはブートストラップは完全に機能します。

phpunitが私のインクルードパスを尊重していないかのようです。

ps。すでにこの記事を読んでいれば、スケルトンプロジェクトを簡略化し、これを反映するためにコードとエラーを編集しました。うまくいけば、これでデバッグが容易になります。

私はいくつかのコード私の助けが説明だと思う:

<?php 

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
    { 

     /** 
     * 
     * 
     * 
     * 
     */ 
     protected function _initConfig() 
     { 

     $config = new Zend_Config($this->getOptions()); 
     Zend_Registry::set('config', $config); 

     } 

     /** 
     * 
     * 
     * 
     * 
     */ 
     protected function _initDoctrine() { 

     require_once('Doctrine/Common/ClassLoader.php'); 

     $autoloader = Zend_Loader_Autoloader::getInstance(); 
     $classLoader = new \Doctrine\Common\ClassLoader('Entities', 
      realpath(Zend_Registry::get('config')->resources->entityManager->connection->entities), 'loadClass'); 

     $autoloader->pushAutoloader(array($classLoader, 'loadClass'), 'Entities'); 

     $classLoader = new \Doctrine\Common\ClassLoader('Repositories', 
      realpath(Zend_Registry::get('config')->resources->entityManager->connection->entities), 'loadClass'); 

     $autoloader->pushAutoloader(array($classLoader, 'loadClass'), 'Repositories');  

     } 

    } 

、今エラー(それの長さのため申し訳ありません)::

[email protected]:/var/www/z2d2/tests$ phpunit 
PHPUnit 3.5.15 by Sebastian Bergmann. 

PHP Fatal error: Bootstrap::_initDoctrine(): Failed opening required 'Doctrine/Common/ClassLoader.php' (include_path='/var/www/z2d2/application/../views:.:/usr/share/php:/usr/share/php/:/usr/local/share/php/library') in /var/www/z2d2/application/Bootstrap.php on line 28 
PHP Stack trace: 
PHP 1. {main}() /usr/bin/phpunit:0 
PHP 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49 
PHP 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129 
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188 
PHP 5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:305 
PHP 6. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:693 
PHP 7. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:733 
PHP 8. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:757 
PHP 9. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:576 
PHP 10. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:666 
PHP 11. ModelTestCase->setUp() /usr/share/php/PHPUnit/Framework/TestCase.php:626 
PHP 12. Zend_Application->bootstrap() /var/www/z2d2/tests/application/models/ModelTestCase.php:16 
PHP 13. Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() /usr/local/share/php/library/Zend/Application.php:355 
PHP 14. Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:586 
PHP 15. Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:622 
PHP 16. Bootstrap->_initDoctrine() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:669 

Fatal error: Bootstrap::_initDoctrine(): Failed opening required 'Doctrine/Common/ClassLoader.php' (include_path='/var/www/z2d2/application/../views:.:/usr/share/php:/usr/share/php/:/usr/local/share/php/library') in /var/www/z2d2/application/Bootstrap.php on line 28 

Call Stack: 
    0.0002  326940 1. {main}() /usr/bin/phpunit:0 
    0.0424  666604 2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:49 
    0.0424  667084 3. PHPUnit_TextUI_Command->run() /usr/share/php/PHPUnit/TextUI/Command.php:129 
    0.0924 4311848 4. PHPUnit_TextUI_TestRunner->doRun() /usr/share/php/PHPUnit/TextUI/Command.php:188 
    0.1036 4751832 5. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/TextUI/TestRunner.php:305 
    0.1037 4752248 6. PHPUnit_Framework_TestSuite->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:693 
    0.1038 4752576 7. PHPUnit_Framework_TestSuite->runTest() /usr/share/php/PHPUnit/Framework/TestSuite.php:733 
    0.1038 4752576 8. PHPUnit_Framework_TestCase->run() /usr/share/php/PHPUnit/Framework/TestSuite.php:757 
    0.1040 4752576 9. PHPUnit_Framework_TestResult->run() /usr/share/php/PHPUnit/Framework/TestCase.php:576 
    0.2036 4787392 10. PHPUnit_Framework_TestCase->runBare() /usr/share/php/PHPUnit/Framework/TestResult.php:666 
    0.2082 4891936 11. ModelTestCase->setUp() /usr/share/php/PHPUnit/Framework/TestCase.php:626 
    0.2567 5678688 12. Zend_Application->bootstrap() /var/www/z2d2/tests/application/models/ModelTestCase.php:16 
    0.2568 5678732 13. Zend_Application_Bootstrap_BootstrapAbstract->bootstrap() /usr/local/share/php/library/Zend/Application.php:355 
    0.2569 5678732 14. Zend_Application_Bootstrap_BootstrapAbstract->_bootstrap() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:586 
    0.2609 5699280 15. Zend_Application_Bootstrap_BootstrapAbstract->_executeResource() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:622 
    0.2610 5699472 16. Bootstrap->_initDoctrine() /usr/local/share/php/library/Zend/Application/Bootstrap/BootstrapAbstract.php:669 

[email protected]:/var/www/z2d2/tests$ phpunit --version 
PHPUnit 3.6.3 by Sebastian Bergmann. 


<?php 
require_once 'Zend/Application.php'; 
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php'; 

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase 
{ 

    public function setUp() 
    { 

     $this->bootstrap = new Zend_Application(
     'development', 
     APPLICATION_PATH . '/configs/application.ini' 
    ); 

     parent::setUp(); 
    } 

    public function tearDown() 
    { 
     parent::tearDown(); 
    } 

} 


<?php 

class IndexControllerTest extends ControllerTestCase 
{ 

    public function testDoesHomePageExist() 
    { 
     $this->dispatch('/'); 
     $this->assertController('index'); 
     $this->assertAction('index'); 

    } 

} 

これは私のシンプルなストラップです

誰かが私が間違っている場所を私に見せてもらえますか?私は私のPHPunitが正しく設定されていないと思われます。

+0

オートローダに問題があるようですが、私はそれほど速く見ることができません。また、Zend Framework 1.xは残念ながらPHPUnit 3.6.xと互換性がありませんが、最初はこの問題は発生しませんが、後でスクリプトを分割してしまいます。 –

+0

ありがとうございます - 私は何かインストールに間違っていたと思う。アンインストールする必要がありますか?どのように私がアンインストールすべきかに関する提案がありましたか? PEARやパッケージマネージャはありますか?どのバージョンをzend 1.xでインストールすることをお勧めしますか? – dimbo

+0

私はこのトピックのあなたの問題はインストールではないと思っていますが、この問題を修正した後、このphpunitバージョンの問題に取り掛かります。古いバージョンをインストールするのは難しいですが、まずすべての依存関係を持つphpunit 3.6を削除してください。次に、バージョン番号を指定してphpunitをインストールすることができます。pear install phpunit/PHPUnit-3.5.14すべての依存関係があります。 –

答えて

3

私はこのように解決しました。PHPunitはメインアプリケーションのブートストラップファイルの相対インクルードパスが気に入らないようです。ですから、phpunit.xmlが指しているテストブートストラップでは、インクルードパスを指定してください。私はこれらの行を追加しました:

set_include_path(
    '.' 
    . PATH_SEPARATOR . BASE_PATH . '/library' 
    . PATH_SEPARATOR . get_include_path() 
); 
関連する問題