2011-11-15 12 views
1

私は単純なdoctrine2/zendスケルトンプロジェクトを作成しましたが、zend studioで単体テストをしようとしています。Zend StudioとPHPunitを連携させることができません

このテストはPHPunit CLIで完全に機能しますが、zend studioで動作するようにはできません。

それは言ってエラーを思い付く:次のようにテストがある

X-Powered-By: PHP/5.2.14 ZendServer/5.0 
Set-Cookie: ZendDebuggerCookie=127.0.0.1%3A10137%3A0||084|77742D65|1016; path=/ 
Content-type: text/html 

<br /> 
<b>Warning</b>: Unexpected character in input: '\' (ASCII=92) state=1 in <b>/var/www/z2d2/tests/application/models/UserModelTest.php</b> on line <b>8</b><br /> 
<br /> 
<b>Warning</b>: Unexpected character in input: '\' (ASCII=92) state=1 in <b>/var/www/z2d2/tests/application/models/UserModelTest.php</b> on line <b>8</b><br /> 
<br /> 
<b>Parse error</b>: syntax error, unexpected T_STRING in <b>/var/www/z2d2/tests/application/models/UserModelTest.php</b> on line <b>8</b><br /> 

<?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(
     'testing', 
     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'); 

    } 

} 



<?php 

class ModelTestCase extends PHPUnit_Framework_TestCase 
{ 

    protected $em; 

    public function setUp() 
    { 

    $application = new Zend_Application(
     'testing', 
     APPLICATION_PATH . '/configs/application.ini' 
    ); 

    $bootstrap = $application->bootstrap()->getBootstrap(); 

    $this->em = $bootstrap->getResource('entityManager'); 

    parent::setUp(); 

    } 

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

} 


<?php 

class UserModelTest extends ModelTestCase 
{ 

    public function testCanInstantiateUser() 
    { 
    $this->assertInstanceOf('\Entities\User', new \Entities\User); 
    } 

    public function testCanSaveAndRetrieveUser() 
    { 

    $user = new \Entities\User; 

    $user->setFirstname('wjgilmore-test'); 
    $user->setemail('[email protected]'); 
    $user->setpassword('jason'); 
    $user->setAddress1('calle san antonio'); 
    $user->setAddress2('albayzin'); 
    $user->setSurname('testman'); 
    $user->setConfirmed(TRUE); 


    $this->em->persist($user); 
    $this->em->flush(); 

    $user = $this->em->getRepository('Entities\User')->findOneByFirstname('wjgilmore-test'); 

    $this->assertEquals('wjgilmore-test', $user->getFirstname()); 



    } 


    public function testCanDeleteUser() 
    { 
    $user = new \Entities\User; 
    $user = $this->em->getRepository('Entities\User')->findOneByFirstname('wjgilmore-test'); 

    $this->em->remove($user); 
    $this->em->flush(); 


    } 





} 

とブートストラップ「はテストが実行されなかった」とデバッグウィンドウに次の出力:

ゴードン氏が提案したように、PHP実行ファイルを5.3に設定した後の新しいエラーです:

X-Powered-By: PHP/5.3.3 ZendServer/5.0 
Set-Cookie: ZendDebuggerCookie=127.0.0.1%3A10137%3A0||084|77742D65|1000; path=/ 
Content-type: text/html 

<br /> 
<b>Fatal error</b>: Class 'ModelTestCase' not found in <b>/var/www/z2d2/tests/application/models/UserModelTest.php</b> on line <b>4</b><br /> 
+0

そのファイルを見るのが面白いでしょう。 – Gordon

+0

申し訳ありませんが、私はあなたが何を意味するか分からない。 – dimbo

+2

'警告:入力に予期しない文字があります: '\'(ASCII = 92)状態= 1 in ...'はPHP 5.2のコードで動作する5.3のコード(名前空間)です。 – edorian

答えて

0

第1の問題は、IDEがPHP 5.2を使用するように設定されていたが、codがPHP 5.3であることでした。

Unexpected character in input: '\' (ASCII=92) state=1 

は、通常、その問題を示唆しています。

もう1つのエラーは、クラスが見つからないということです。それはPHPが必要なクラスを見つけることができないためです。 Zend Frameworkのオートローダが設定されていない可能性があります。

テスト中にこの問題が発生した場合は、phpunit.xmlにオートローダが初期化されている<phpunit bootstrap="yourApplicationBootstrap.php" ...エントリが含まれていることを確認してください。それは/var/www/z2d2/tests/application/models/UserModelTest.phpで予期しないT_STRINGを言うことを考えるあなたのために働くことができるPHPUnitのZFのドキュメントと何に文書化されてどのようにそれがうまくいく:)

+0

ありがとうございます。なぜPHPunitはZend Studioの外で正しく動作しますか?私はあなたが示唆したように設定したと思います:私のphpunit.xmlは、ModelTestCaseが不足しているphpunitブートストラップを指しています。私は本当にここで何かを欠いていますか? – dimbo

+0

@dimbo Zend Studioがphpunit設定ファイルをまったく気にしていないかどうかわかりません。私が見て解決できる問題はPHP版でしたが、別の質問を開いたり、Zend Forumsを見たりしたいという余計な質問がありました。おそらく、Zend Studioのどこかで設定したブートストラップファイルを再度特定する必要がありますか?申し訳ありませんが、PHPUnitを実行してIDEを詳細にするのを手助けすることはできません。私はそれほど気にしないで、それを使わないでください:) – edorian

+0

エドリアンとゴードンに感謝します。あなたが正しいです、最初の問題は解決されました。別の質問を開く:ブートストラップの問題。 – dimbo

関連する問題