2011-11-13 4 views
1

젠드 프레임 워크의 단위 테스트에 대해 배우려고합니다. 나는 PHPunit을 설치했다.PHPunit 용 젠드 프레임 워크 구성

는 또한 잘 작동하고 성공적으로 난 그냥 사용하고 phpunit을 이해 시작할 등 DB

에 쓰는 간단한 젠드/교리 2 골격을 만들었습니다,하지만 이상한 오류를주고있다. 나는 절대적으로 아무것도하지 않는 빈 IndexController있다. 나는 단지 그것이 존재한다고 주장하고 싶다. PHPunit은 부트 스트랩과 관련된 많은 오류 목록을 던지지만 실제로 부트 스트랩은 완벽하게 작동합니다.

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

나는 PHP로이 문제를 해결했다. PHPunit은 주 응용 프로그램 부트 스트랩 파일의 상대 경로가 마음에 들지 않는다. 따라서 phpunit.xml이 가리키는 테스트 부트 스트랩에서 include 경로를 지정해야합니다. 나는 다음 라인을 추가했다 :

set_include_path(
    '.' 
    . PATH_SEPARATOR . BASE_PATH . '/library' 
    . PATH_SEPARATOR . get_include_path() 
);