找不到类Zend_Test_PHPUnit_ControllerTestCase

时间:2009-04-17 14:33:25

标签: zend-framework phpunit

当我运行phpunit来测试我的控制器时,总会收到消息:Class Zend_Test_PHPUnit_Controller_TestCase could not be found ...

所有require_once都会执行并且无误地运行。

我的档案:

test.php的:

<?php

require_once 'bootstrap.php';

class indexTest extends Zend_Test_PHPUnit_ControllerTestCase
{
    protected function setUp ()
    {
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap ()
    {
        $this->frontController->registerPlugin(new DemoApp_Controller_Plugin_Initialize('test', PROJECT_ROOT));
    }

    public function testIndex()
    {
        $this->dispatch('/');
        $this->assertController('login');
    }   
}

bootstrap.php中:

<?php
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../src/application/'));

set_include_path( APPLICATION_PATH . '/../library' . PATH_SEPARATOR .
        APPLICATION_PATH . '/modules' . PATH_SEPARATOR .
        APPLICATION_PATH . '/layouts' . PATH_SEPARATOR .
        get_include_path() );

require_once 'PHPUnit/Framework.php';     
require_once 'PHPUnit/Framework/TestSuite.php';    
require_once 'PHPUnit/TextUI/TestRunner.php';

error_reporting(E_ALL);

require_once APPLICATION_PATH . "/../library/Zend/Loader.php";
Zend_Loader::registerAutoload();

// Set up the config in the registry path relative to public/index.php
$config = new Zend_Config_Ini(APPLICATION_PATH . '/config.ini'); //, 'test'
Zend_Registry::set('config', $config);

/*// Set up the database in the Registry
$db = Zend_Db::factory($config->db);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
*/

// Set timezone
date_default_timezone_set("Europe/Berlin");

6 个答案:

答案 0 :(得分:1)

课程不在您的包含路径中,或者您根本没有课程。
采取的步骤:

  1. 查找课程文件
  2. 确保课程在您的课程中 包括路径,包括 auto_loader名称解析: Z_Y_YourClass将被查看 包含路径/ Z / Y / YourClass.php
  3. 祝你好运

答案 1 :(得分:1)

您可以将其放入引导程序以激活自动加载器。

require_once 'Zend/Loader/Autoloader.php'; $loader = Zend_Loader_Autoloader::getInstance();

如果您创建了一个应用程序对象,它会自动为您执行此操作 但是否则使用上面的方法自己做。

答案 2 :(得分:0)

最明显的第一个问题是,Zend Framework源代码的版本是什么?它位于Zend/Version.php.

答案 3 :(得分:0)

两种对我有用的解决方案:

  1. 在tests目录中创建符号链接为ln -s ../library/Zend,允许自动加载器查找文件
  2. 将/ library添加到php include路径 - 这也有助于自动加载器找到文件

答案 4 :(得分:0)

将它放在bootstrap.php文件中:

require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

为我工作。祝你好运!

答案 5 :(得分:0)

我在以下设置中遇到了类似的问题

  • 已下载zend 1.12,
  • 通过zf工具创建了一个项目:sh bin/zf.sh create project my-project
  • 然后从项目的根文件夹运行phpunit

解决方案cd tests,然后运行phpunit。

原因为什么会发生这种情况,phpunit需要先启动。 引导脚本在tests/phpunit.xml配置文件中定义,如果文件位于命令运行的同一目录中,则默认情况下将加载该脚本。

phpunit.xml:

<?xml version="1.0" encoding="utf-8" ?>
<phpunit bootstrap="./bootstrap.php">
    <testsuite name="Application Test Suite">
    ....

或者你可以从任何目录中调用phpunit,用-c参数指定phpunit.xml的位置

phpunit -c tests/phpunit.xml