3

コントローラーをテストするために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');
    }   
}

ブートストラップ.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 名の解析を含め、クラスがインクルード パスにあることを確認してください。

幸運を

于 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

私のために働いた2つの解決策:

  1. tests ディレクトリ内に ln -s ../library/Zend としてシンボリックリンクを作成し、オートローダーがファイルを見つけられるようにします
  2. /library を php インクルード パスに追加します。これは、オートローダーがファイルを見つけるのにも役立ちます。
于 2012-01-10T11:10:21.787 に答える
0

次のセットアップで同様の問題が発生しました

  • ダウンロードしたzend 1.12、
  • zf ツールを使用してプロジェクトを作成しました。sh bin/zf.sh create project my-project
  • 次にphpunit、プロジェクトのルート フォルダーから実行します。

解決策は、phpunitcd testsを実行することでした。

これが発生した理由は、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 Framework ソースのどのバージョンが含まれているかということです。入った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 に答える