PHPUNIT_Framework_TestCase introuvable lors de l'exécution d'un test unique
Je suis en train d'utiliser des tests avec PHPUnit Laravel 5.2.10. J'ai PHPUnit 5.1.4 installé localement à l'intérieur de mon projet.
Quand je le lance:
phpunit
PHPUnit s'exécute tous les tests dans mon test
répertoire parfaitement.
Cependant, lorsque je lance:
phpunit tests/unit/testThatFails.php
J'obtiens:
PHP Fatal error: Class 'PHPUNIT_Framework_TestCase' not found in ...
La chose étrange est que quand je lance phpunit c'est avec succès l'exécution de chaque test dans le répertoire de test, y compris ce testThatFails.php
l'amende juste.
Pourquoi faut-il casser quand j'essaie de le lancer juste un test?
Mise à jour:
Voici mon phpunit.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">app/</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
Mise à jour:
Pour l'instant, depuis que je suis à l'aide de Laravel, je suis contourner ce problème en étendant TestCase
plutôt que PHPUNIT_Framework_TestCase
, et mes tests sont en mesure de fonctionner comme prévu. Cependant, c'est juste un contournement et pas un solution. (Il est aussi étrange pour moi que cela fonctionne étant donné le fait que TestCase
lui-même n'a en fin de compte s'étendre à partir de PHPUNIT_Framework_TestCase
.
Vous devez vous connecter pour publier un commentaire.
Le message dit
PHPUNIT_Framework_TestCase
, mais la classe est en fait appeléPHPUnit_Framework_TestCase
. Maintenant, voici la chose la plus délicateAinsi, lorsque vous exécutez le test séparément, la classe
PHPUNIT_Framework_TestCase
n'est pas chargé avant votre cas de test fichier est inclus et l'autochargeur recherchez un fichierPHPUNIT/Framework/TestCase.php
au lieu dePHPUnit/Framework/TestCase.php
. Ce fichier n'existe pas et vous recevez la "classe pas trouvé d'erreur".Solution
Remplacer
avec
PHPUnit charge le fichier de configuration
phpunit.xml
(voir ici) qui détient l'info sur le fichier bootstrapC'est le
bootstrap.php
qui charge leautoloader
donc de faire de tous de ces classes disponibles dans votre application.La
autoload.php
, probablement, n'est pas inclus dans letestThatFails.php
. Leautoload php
charge lePHPUNIT_Framework_TestCase
avec d'autres fichiers/classes qui peuvent être pertinents à cette affaire (une autre unité de classes de test, etc.). A mon avis le meilleur moyen, autre que l'inclure dans lephpunit.xml
, est d'inclure le fichier bootstrap comme un argument en commandephpunit
mais pas quand j'essaie d'exécuter un test spécifique?phpunit.xml
fichier, peut-être il y a une explication cachée quelque part?bootstrap/autoload.php
?