Laravel phpunit テストがコールスタックで TestCase オブジェクトを見つけることができません
P粉733166744
2023-08-26 20:14:38
<p>すべてのテストを実行する場所
<code>php職人テスト</code>
すべてが期待どおりに動作し、すべてのテストが実行されます</p>
<p>ここで、signle test <code>php 職人テスト --filter test_get_profile</code> を実行すると、この有線エラーが発生します</p>
<pre class="brush:php;toolbar:false;">PHPUnit 内でエラーが発生しました。
メッセージ: コール スタックで TestCase オブジェクトが見つかりません
場所: D:\laragon\www\project\vendor\phpunit\phpunit\src\TextUI\TestRunner.php:68</pre>
<p>しかし、test_login や test_register など、他のテストはまだ機能しますが、新しいテストを作成すると、うまく動作することもあれば、この有線エラーが発生することもあります</p>
<p>PS: ファイル パスの例を追加しました<code>phpArtisan Test testing/Feature/AccountTest.php --filter test_get_profile</code> エラーは発生しませんが、常にファイルパス</p>
<p>すべてのテストは空であることに注意してください</strong></p>
<pre class="brush:php;toolbar:false;">パブリック関数 test_get_profile(): void
{
$response = $this->get('/');
$response->assertStatus(200);
}</pre>
<p>この問題について知っている人はいますか?私は現在、laravel 10 と 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"
色="true"
>
<テストスイート>
<テストスイート名="ユニット">
<directory suffix="Test.php">./tests/Unit</directory>
</テストスイート>
<テストスイート名="機能">
<directory suffix="Test.php">./tests/Feature</directory>
</テストスイート>
</testsuites>
<ソース>
<含める>
<ディレクトリサフィックス=".php">./app</ディレクトリ>
</include>
</ソース>
<php>
<環境名="APP_ENV"値="テスト中"/>
<環境名="BCRYPT_ROUNDS"値="4"/>
<環境名="CACHE_DRIVER"値="配列"/>
<!-- <環境名="DB_CONNECTION"値= "sqlite"/> -->
<!-- <環境名="DB_DATABASE"値=":メモリ:"/> -->
<環境名="MAIL_MAILER"値="配列"/>
<環境名="QUEUE_CONNECTION"値="同期"/>
<環境名="SESSION_DRIVER"値="配列"/>
<環境名="TELESCOPE_ENABLED"値="false"/>
</php>
</phpunit></pre>
<p>UserTest.php</p>
<pre class="brush:php;toolbar:false;">名前空間 Tests\Feature;
Tests\TestCase を使用します。
クラス UserTest は TestCase を拡張します
{
パブリック関数 test_login(): void
{
$response = $this->get('/');
$response->assertStatus(200);
}
パブリック関数 test_register(): void
{
$response = $this->get('/');
$response->assertStatus(200);
}
}</pre>
<p>AccountTest.php</p>
<pre class="brush:php;toolbar:false;">名前空間 Tests\Feature;
Tests\TestCase を使用します。
クラス AccountTest は TestCase を拡張します
{
/**※基本的な機能テストの例です。*/
パブリック関数 test_get_profile(): void
{
$response = $this->get('/');
$response->assertStatus(200);
}
}</pre></p>
これは PHPUnit のバグです。
https://github.com/sebastianbergmann/phpunit/issues/5403
これが修正です -
https://github.com/sebastianbergmann/phpunit/commit/16166431bce84bb100d8e7fe867d612bdfe61776# diff-548ab8441af390a03ab9bf5e83a441aaa67c43de14b247a1426c2983b434bd89
Composer アップデートを実行して最新バージョンを入手します。