3

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

所有 require_once 都被执行并运行而没有错误。

我的文件:

测试.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');
    }   
}

引导程序.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");
4

6 回答 6

1

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

  1. 找到类文件
  2. 确保该类在您的包含路径中,包括 auto_loader 名称解析: Z_Y_YourClass 将查看 include_path/Z/Y/YourClass.php

祝你好运

于 2009-04-17T19:50:58.490 回答
1

你可以把它放在你的引导程序中来激活自动加载器。

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

如果您创建应用程序对象,它会自动为您执行此操作,否则请使用上述内容自行执行。

于 2011-04-01T04:55:29.587 回答
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">
    ....

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

phpunit -c tests/phpunit.xml
于 2012-11-22T12:05:26.590 回答
0

最明显的第一个问题是,Zend 框架源代码有什么版本?在里面Zend/Version.php.

于 2009-04-17T19:50:30.037 回答
0

把它放在你的 bootstrap.php 文件中:

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

为我工作。祝你好运!

于 2012-02-28T17:16:32.020 回答
0

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

  1. 在测试目录中创建符号链接作为 ln -s ../library/Zend 允许自动加载器找到文件
  2. 将 /library 添加到 php 包含路径 - 这也有助于自动加载器定位文件
于 2012-01-10T11:10:21.787 回答