我正在使用 PHP 5.3.4、Zend 1.11.11 和 PHPUnit 3.7.1 运行 Wamp Server。我的项目结构是默认的 Zend 布局,其中测试文件夹组织如下:
tests/
application/
library/
bootstrap.php
phpunit.xml
IndexControllerTest.php
两者application/
和 library/
都是空的。这个基本案例适用于我当前的设置,我可以phpunit IndexControllerTest
从终端运行,它运行测试没有错误。一旦我将 IndexControllerTest.php 移动到不同的位置(例如,在application/
目录中),就会出现问题。然后我从 phpunit 收到一个致命错误:
PHP Fatal error: Class 'Zend_Test_PHPUnit_ControllerTestCase' not found in
X:\Program Files (x86)\Wamp\www\Local_site\Zend\login\tests\application\IndexControllerTest.php
on line 3
现在除非我弄错了,否则 Autoloader 应该会处理这个问题require()
,但是一旦我更改了测试文件的位置,就会出现问题。我已经尝试一遍又一遍地调整 phpunit.xml 文件,但我不确定这是我的问题所在,还是在我的 bootstrap.php 或我的代码中。任何见解将不胜感激。甚至向正确的方向轻推。以下是相关文件:
phpunit.xml
<phpunit bootstrap="./bootstrap.php">
<testsuites>
<testsuite name="My Project">
<directory>./tests</directory>
</testsuite>
</testsuites>
<filter>
<!-- If Zend Framework is inside your project's library, uncomment this filter -->
<whitelist>
<directory suffix=".php">/library/Zend</directory>
</whitelist>
</filter>
</phpunit>
引导程序.php
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
索引控制器测试.php
<?php
class IndexControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{
protected $application;
public function setUp()
{
// Assign and instantiate in one step:
$this->bootstrap = new Zend_Application(
'testing',
APPLICATION_PATH . '/configs/application.ini'
);
parent::setUp();
}
public function testTrue()
{
$this->assertTrue(true);
}
}
根据来自黄金互联网的其他建议,我还将我的 php/php.ini include_path 更改为:
include_path=".;X:\Program Files (x86)\Wamp\bin\php\php5.3.4\pear;X:\Program Files (x86)\Wamp\bin\php\php5.3.4\pear\PHPUnit"
我需要明确包括Zend/Test/PHPUnit/ControllerTestCase.php
吗?我已经尝试了数百种解决方案,但我一直在盲目飞行,所以我可能非常接近甚至不知道它。