不能让Zend Studio和PHPunit一起工作


Can't get Zend Studio and PHPunit to work together

我已经创建了一个简单的doctrine2/zend骨架项目,并试图获得与zend工作室工作的单元测试。

通过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('example@wjgilmore.com');
    $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();

  }


}

和bootstrap:

<?php
define('BASE_PATH', realpath(dirname(__FILE__) . '/../../'));
define('APPLICATION_PATH', BASE_PATH . '/application');
set_include_path(
    '.'
    . PATH_SEPARATOR . BASE_PATH . '/library'
    . PATH_SEPARATOR . get_include_path()
);

require_once 'controllers/ControllerTestCase.php';
require_once 'models/ModelTestCase.php';

下面是Gordon建议将PHP Executable设置为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 />

第一个问题是IDE设置为PHP 5.2,但cod是PHP 5.3。

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

通常暗示了那个问题。

修复了另一个错误是找不到类之后。这是因为PHP找不到所需的类。很有可能Zend Framework的自动加载器没有设置好。

如果在测试时发生这种情况,请确保phpunit.xml包含一个<phpunit bootstrap="yourApplicationBootstrap.php" ...条目,其中初始化了自动加载器。

如何工作是在ZF文档中记录的,phpunit不能为您解决:)