2010-09-29 2 views
4

После установки PHPUnit 3,5 я пытаюсь запустить мои тесты так:Ошибки при тестировании с PHPUnit 3,5

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 

Это содержимое мой AllTests.php

А вот содержание Alltests.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(); 
    } 

А вот блок/AllTests.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"); 

Любая идея-х?

Update

Я добавил/USR/доли/PHP на мой включать путь. Теперь я получаю другую ошибку:

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 

ответ

10

Ну, на самом деле Лоран Лаффонт вида при условии, что правильный ответ: Неполная установка MockObject.

За Installation Instructions вам необходимо удалить предыдущий PHPUnit, прежде чем вы сможете установить версию 3.5

Но это, кажется, не достаточно, вы также должны удалить дополнительные пакеты (в данном случае PHPUnit_MockObjects) и только затем установить новый verstion:

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

и что переустановить пакет PHP_MockObject со всеми необходимыми файлами на месте.

+3

Спасибо, наконец, получил это, чтобы работать, пришлось изменить его на pear удалить phpunit/PHPUnit_MockObject хотя –

3

Вам нужно

require_once 'PHPUnit/Framework.php' 

так PHPUnit 3.4 IIRC. Не пытайтесь загружать отдельные файлы PHPUnit.

О, и в PHPUnit 3.5 есть автозагрузчика вы должны использовать:

require_once 'PHPUnit/Autoload.php'; 
+0

Хорошо, это дает мне уведомление, что мне больше не нужно его требовать. Кроме того, ошибки не исчезли. – sanders

+0

Да, это то, что у меня было до этого. Но это не решает проблему. – sanders

+1

Я не вижу никаких require_once "PHPUnit/Autoload.php"; код в вашем вопросе, поэтому я этого не видел. – cweiske

5

Для ошибки PHPUnit_Framework_MockObject_Generator, пришлось вручную получить http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz и скопировать

PHPUnit_MockObject-1.0.0/PHPUnit/Framework/MockObject/ 

в

/usr/share/pear/PHPUnit/Framework/ 
+0

my PHPUNit не установлен в этом каталоге. Так что не получится – sanders

3

Я должен был сделать то же самое @Laurent сказал, неважно, где ваш p hpunit установлен.

Если вы установили PHPUnit с грушей, просто сделайте pear config-get php_dir в своей оболочке. PHPUnit скорее всего установлен в этом каталоге.

Везде, где установлен ваш PHPUnit, замените каталог на PHPUnit/Framework/MockObject с каталогом на PHPUnit/Framework/MockObject/ в папке, которую вы скачали отсюда http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz

+1

Вот разработчик PHPUnit, объясняющий проблему http://sebastian-bergmann.de/archives/899-PHPUnit-3.5-Upgrading-Woes.html –

Смежные вопросы