代码之家  ›  专栏  ›  技术社区  ›  sanders

使用PHPUnit 3.5测试时出错

  •  4
  • sanders  · 技术社区  · 15 年前

    phpunit AllTests.php
    

    但我得到以下错误:

    PHP Fatal error:  Class 'PHPUnit_TextUI_TestRunner' not found in /usr/share/php/PHPUnit/TextUI/Command.php on line 140
    Fatal error: Class 'PHPUnit_TextUI_TestRunner' not found in /usr/share/php/PHPUnit/TextUI/Command.php on line 140
    

    这是我的书的内容所有测试.php

    以下是所有测试.php

          <?php
        if (!defined('PHPUnit_MAIN_METHOD')) {
            define('PHPUnit_MAIN_METHOD', 'AllTests::main');
        }
    
        /**
         * TestHelper
         */
        require_once 'TestHelper.php';
    
        /**
         * @see SF_Unit_AllTests
         */
        require_once 'unit/AllTests.php';
    
        class AllTests
        {
            public static function main()
            {
                $parameters = array();
    
                PHPUnit_TextUI_TestRunner::run(self::suite(), $parameters);
            }
    
            public static function suite()
            {
                $suite = new PHPUnit_Framework_TestSuite('EventManager');
    
                $suite->addTest(SF_Unit_AllTests::suite());
    
                return $suite;
            }
        }
    
        if (PHPUnit_MAIN_METHOD == 'AllTests::main') {
            AllTests::main();
        }
    

    这是单位/所有测试.php文件

    <?php
    if (!defined('PHPUnit_MAIN_METHOD')) {
        define('PHPUnit_MAIN_METHOD', 'SF_Unit_AllTests::main');
    }
    
    /**
     * Testhelper
     */
    require_once dirname(__FILE__). '/../TestHelper.php';
    
    /**
     * Include unit tests
     */
    require_once('unit/Model/ModelAbstractTest.php');
    require_once('unit/Model/EventTest.php');
    //require_once('unit/Model/UserTest.php');
    //require_once('unit/Model/AuthenticationTest.php);
    
    /**
     * 
     * @author jigal
     *
     */
    class SF_Unit_AllTests
    {
        /**
         * 
         * @return unknown_type
         */
        public static function main()
        {
            PHPUnit_TextUI_TestRunner::run(self::suite());
        }
    
        /**
         * 
         * @return PHPUnit_Framework_TestSuite
         */
        public static function suite()
        {
            $suite = new PHPUnit_Framework_TestSuite('EventManager Unit tests');
            $suite->addTestSuite('ModelAbstractTest');
            $suite->addTestSuite('EventTest');
            //$suite->addTestSuite('UserTest');
            //$suite->addTestSuite('Authentication')
            return $suite;
        }
    
    
    }
    
    if (PHPUnit_MAIN_METHOD == 'SF_Unit_AllTests::main') {
        SF_Unit_AllTests::main();
    }
    

    TestHelper.php文件

    /**
     * Get PHPUnit
     */
    require_once 'PHPUnit/Autoload.php';
    
    
    /*
     * Set error reporting level
     */
    error_reporting( E_ALL | E_STRICT );
    
    /**
     * Default timezone
     */
    date_default_timezone_set('Europe/London');
    
    /*
     * Set the include path
     */
        /*
     * Set the include path
     */
    
        $root  = realpath(dirname(__FILE__) . '/../');
        $paths = array(
            "/usr/share/php/",
            "$root/library/Incu",
            "$root/library",
            "$root/tests",
            "$root/application"
        );
        set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $paths))
    
    ;
    
    
    defined('APPLICATION_PATH')
        or define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
    defined('APPLICATION_ENV')
    or define('APPLICATION_ENV', 'development');
        require_once 'Zend/Application.php';
    /**
     * Autoloader helpers
     */
    function _SF_Autloader_SetUp() 
    {
        require_once 'Zend/Loader/Autoloader.php';
    
        $loader = Zend_Loader_Autoloader::getInstance();
        $loader->registerNamespace('SF_');
        $application = new Zend_Application(
                APPLICATION_ENV,
                APPLICATION_PATH.'/configs/events.ini'
        );
    
    }
    
    function _SF_Autloader_TearDown()
    {
        Zend_Loader_Autoloader::resetInstance();
        $loader = Zend_Loader_Autoloader::getInstance();
        $loader->registerNamespace('SF_');
    }
    
    /**
     * Init autoloader
     */
    _SF_Autloader_SetUp();
    
    /**
     * Start session now!
     */
    Zend_Session::$_unitTestEnabled = true;
    Zend_Session::start();
    
    /**
     * Ignore folders from code coverage etc
     */
    //PHPUnit_Util_Filter::addDirectoryToFilter("$root/tests");
    //PHPUnit_Util_Filter::addDirectoryToFilter("$root/library/Zend");
    
    
    PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist("$root/tests");
    PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist("$root/library/Zend");
    

    现在我得到了一个不同的错误:

    PHPUnit 3.5.0 by Sebastian Bergmann.
    
    ....PHP Fatal error:  Class 'PHPUnit_Framework_MockObject_Generator' not found in /usr/share/php/PHPUnit/Framework/TestCase.php on line 1049
    
    Fatal error: Class 'PHPUnit_Framework_MockObject_Generator' not found in /usr/share/php/PHPUnit/Framework/TestCase.php on line 1049
    
    4 回复  |  直到 15 年前
        1
  •  10
  •   Victor Farazdagi    15 年前

    实际上laurentlaffont给出了正确的答案:MockObject安装不完整。

    Installation Instructions 您必须先卸载以前的PHPUnit,然后才能安装3.5版

    pear uninstall phpunit/phpunit
    pear uninstall phpunit/PHP_MockObject
    pear install phpunit/phpunit
    

    重新安装的PHP\u MockObject包中包含了所有必要的文件。

        2
  •  5
  •   sra Jon    13 年前

    对于PHPUnit\u Framework\u MockObject\u生成器错误,必须手动获取 http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz

    PHPUnit_MockObject-1.0.0/PHPUnit/Framework/MockObject/ 
    

    /usr/share/pear/PHPUnit/Framework/
    
        3
  •  3
  •   cweiske agentofuser    15 年前

    你需要

    require_once 'PHPUnit/Framework.php'
    

    从phpunit 3.4 IIRC开始。不再尝试加载单个PHPUnit文件。

    require_once 'PHPUnit/Autoload.php';
    
        4
  •  3
  •   Kayla Rose    15 年前

    我不得不做同样的事情@Laurent说,不管你的phpunit安装在哪里。

    如果你安装了PHPUnit和pear,就做一个 pear config-get php_dir 在你的壳里。PHPUnit很可能安装在该目录中。

    无论您的PHPUnit安装在何处,请将目录替换为 PHPUnit/Framework/MockObject PHPUnit/Framework/MockObject/ http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz

    推荐文章