Le test Laravel phpunit ne trouve pas l'objet TestCase sur la pile d'appels
P粉733166744
2023-08-26 20:14:38
<p>Où exécuter tous les tests
<code>php artisan test</code>
Tout fonctionne comme prévu et tous les tests sont exécutés</p>
<p>Maintenant, lorsque j'exécute signle test <code>php artisan test --filter test_get_profile</code>, j'obtiens cette erreur filaire</p>
<pre class="brush:php;toolbar:false;">Une erreur s'est produite dans PHPUnit.
Message : Impossible de trouver l'objet TestCase sur la pile d'appels
Emplacement : D:laragonwwwprojectvendorphpunitphpunitsrcTextUITestRunner.php:68</pre>
<p>Mais certains autres tests fonctionnent toujours, comme test_login et test_register, mais lorsque je crée de nouveaux tests, parfois cela fonctionne, parfois j'obtiens cette erreur filaire</p>
<p>PS : j'ai ajouté l'exemple de chemin de fichier<code>php artisan test tests/Feature/AccountTest.php --filter test_get_profile</code> chemin du fichier< ;/ p>
<p>Veuillez<strong>notez que tous les tests sont vides</strong></p>
<pre class="brush:php;toolbar:false;">fonction publique test_get_profile() : void
{
$réponse = $this->get('/');
$response->assertStatus(200);
}</pré>
<p> Quelqu'un est-il au courant de ce problème ?Il existe une version laravel 10 et phpunit 10</p>
<p>phpunit.xml:</p>
<pre class="brush:php;toolbar:false;"><phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
couleurs = "vrai"
>
<suites de tests>
<nom de la suite de tests="Unité">
<suffixe du répertoire="Test.php">./tests/Unit</directory>
</suite de tests>
<nom de la suite de tests="Fonctionnalité">
<suffixe du répertoire="Test.php">./tests/Feature</directory>
</suite de tests>
</suites de tests>
<source>
<inclure>
<suffixe du répertoire=".php">./app</directory>
</inclure>
</source>
<php>
<env name="APP_ENV" value="test"/>
<env name="BCRYPT_ROUNDS" valeur="4"/>
<env name="CACHE_DRIVER" value="tableau"/>
<!-- <env name="DB_CONNECTION" value="sqlite"/> --->
<!-- <env name="DB_DATABASE" valeur=":mémoire:"/> --->
<env name="MAIL_MAILER" value="tableau"/>
<env name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="tableau"/>
<env name="TELESCOPE_ENABLED" valeur="faux"/>
</php>
</phpunit></pre>
<p>UserTest.php</p>
<pre class="brush:php;toolbar:false;">espace de noms TestsFeature;
utilisez TestsTestCase ;
la classe UserTest étend TestCase
{
fonction publique test_login() : vide
{
$réponse = $this->get('/');
$response->assertStatus(200);
}
fonction publique test_register() : vide
{
$réponse = $this->get('/');
$response->assertStatus(200);
}
}≪/pré>
<p>AccountTest.php</p>
<pre class="brush:php;toolbar:false;">espace de noms TestsFeature;
utilisez TestsTestCase ;
la classe AccountTest étend TestCase
{
/*** Un exemple de test de fonctionnalités de base.*/
fonction publique test_get_profile() : void
{
$réponse = $this->get('/');
$response->assertStatus(200);
}
}</pre></p>
Il s'agit d'un bug dans PHPUnit.
https://github.com/sebastianbergmann/phpunit/issues/5403
C'est la solution -
https://github.com/sebastianbergmann/phpunit/commit/16166431bce84bb100d8e7fe867d612bdfe61776#diff-548ab8441af390a03ab9bf5e83a441aaa67c43de14b247a1426c2983b 434 bd89
Exécutez la mise à jour de Composer pour obtenir la dernière version.