2010-09-29 15 views
4

PHPUnit Après avoir installé PHPUnit 3.5 je suis en train d'exécuter mes tests de cette façon:erreurs lors des tests avec 3,5

phpunit AllTests.php 

Mais je reçois les erreurs suivantes:

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 

Ceci est le contenu de mon AllTests.php

Et est ici le contenu de 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(); 
    } 

Et voici le fichier Unité/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"); 

Toute idée de?

Mise à jour

J'ai ajouté/usr/share/php dans mon chemin. Maintenant, je reçois une autre erreur:

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 

Répondre

10

Eh bien, en fait Laurent Laffont a fourni type de réponse: installation incomplète de Mock Object.

Par Installation Instructions vous devez désinstaller PHPUnit précédent, avant de pouvoir installer la version 3.5

Mais cela ne semble pas suffisant, vous devez également désinstaller des packages supplémentaires (dans ce PHPUnit_MockObjects cas) et ensuite seulement installer un nouveau verstion:

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

Et que réinstallées package PHP_MockObject avec tous les fichiers nécessaires en place.

+3

Merci enfin eu ce travail, a dû changer à pear désinstaller phpunit/PHPUnit_MockObject si –

3

Vous devez

require_once 'PHPUnit/Framework.php' 

depuis PHPUnit 3.4 IIRC. N'essayez plus de charger les fichiers PHPUnit individuels.

Oh, et PHPUnit 3.5 il y a un chargeur automatique, vous devez utiliser:

require_once 'PHPUnit/Autoload.php'; 
+0

Eh bien, cela me donne un avis que je n'ai plus besoin de l'exiger. De plus, les erreurs ne sont pas parties. – sanders

+0

Oui c'est ce que j'avais avant. Mais cela ne résout pas le problème. – sanders

+1

Je ne vois pas require_once "PHPUnit/Autoload.php"; code dans votre question, c'est pourquoi je ne l'ai pas vu. – cweiske

5

Pour toute erreur PHPUnit_Framework_MockObject_Generator, a dû obtenir manuellement http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz et copier

PHPUnit_MockObject-1.0.0/PHPUnit/Framework/MockObject/ 

à

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

mon PHPUNit n'est pas installé dans ce répertoire. Donc, cela ne fonctionnera pas – sanders

3

Je devais faire la même chose @Laurent dit, peu importe où votre p hpunit est installé.

Si vous avez installé PHPUnit avec pear, faites simplement pear config-get php_dir dans votre shell. PHPUnit est probablement installé dans ce répertoire.

Quel que soit votre PHPUnit est installé, remplacez le répertoire à PHPUnit/Framework/MockObject avec le répertoire à PHPUnit/Framework/MockObject/ dans le dossier que vous avez téléchargé à partir d'ici http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz

+1

Voici un développeur de PHPUnit expliquant le problème http://sebastian-bergmann.de/archives/899-PHPUnit-3.5-Upgrading-Woes.html –