132

なぜこのPHPエラーが発生するのですか?

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in ...
4

14 に答える 14

261

2017-02-03にリリースされたバージョン6以降にphpunitを更新した後にここに到着した場合(composerなど)、phpunitコードの名前空間が変更されたため、このエラーが発生する可能性があります(changelogを確認してください)。

\PHPUnit_Framework_TestCase次のようなものをリファクタリングする必要があります\PHPUnit\Framework\TestCase

于 2017-03-02T17:05:06.913 に答える
74

PHPUnitのドキュメントに 、次のようにPHPUnit/Framework.phpを含める/必要とするというものがあります。

require_once ('PHPUnit/Framework/TestCase.php');

アップデート

PHPUnit 3.5の時点で、これを処理する組み込みのオートローダークラスがあります。

require_once 'PHPUnit/Autoload.php';

これを指摘してくれたPhoenixに感謝します!

于 2011-05-19T22:58:58.150 に答える
49

6.4などのphpunitの上位バージョンの場合、名前空間PHPUnit \ Framework\TestCase を使用する必要があります

PHPUnit_Framework_TestCaseの代わりにTestCaseを使用してください

// use the following namespace
use PHPUnit\Framework\TestCase;

// extend using TestCase instead PHPUnit_Framework_TestCase
class SampleTest extends TestCase {

}
于 2017-11-20T13:49:15.120 に答える
15

PHP5でPHPUnitテストを実行していたので、PHP7もサポートする必要がありました。これは私がしたことです:

composer.jsonの場合:

"phpunit/phpunit": "~4.8|~5.7"

私のPHPUnitブートストラップファイル(私の場合は/tests/bootstrap.php):

// PHPUnit 6 introduced a breaking change that
// removed PHPUnit_Framework_TestCase as a base class,
// and replaced it with \PHPUnit\Framework\TestCase
if (!class_exists('\PHPUnit_Framework_TestCase') && class_exists('\PHPUnit\Framework\TestCase'))
    class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase');

つまり、これは元々PHPUnit 4または5用に作成されたテストで機能しますが、PHPUnit6でも機能する必要があります。

于 2017-07-30T03:59:24.400 に答える
13

ファイルに名前空間を付けたため、このエラーが発生する場合があります。その場合は、バックスラッシュを前に付けて、PHPUnit_Framework_TestCaseがグローバル名前空間にあることを指定する必要があります。

namespace AcmeInc\MyApplication\Tests
class StackTest extends \PHPUnit_Framework_TestCase {}

ドキュメントを修正するための会話を開始するために、大まかなPRを提出しました。

于 2014-12-18T03:14:30.683 に答える
6

PHPUnitをインストールするだけで、コマンドを実行できます(https://github.com/sebastianbergmann/phpunit/#php-archive-phar):

wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit

単一のテストを実行する

そして、PHPunitテストを実行します。

phpunit test.php

テストファイルの内容は次のとおりです。

<?php

class StackTest extends PHPUnit_Framework_TestCase
{
    protected function setUp()
    {
    }

    public function testSave()
    {

    }
}

テストスイートを実行する

テストスイートの構成:demosuite.xml。demoすべてのテストを含むディレクトリです。*_test.phpテストファイルには( )という名前を付ける必要がありますsuffix

<testsuites>
    <testsuite name="DemoTestSuite">
        <directory suffix="test.php">demo</directory>
    </testsuite>
</testsuites>

テストスイートは、次のコマンドで実行されます。

phpunit -c demosuite.xml --testsuite DemoTestSuite
于 2013-10-18T10:38:16.393 に答える
4

予測:

Phpunit(3.7)は、コンソール環境で使用できます。

アクション:

コンソールに次のコマンドを入力します。

SHELL> phpunit "{{PATH TO THE FILE}}"

コメント:

コンソールで実行したくない場合を除いて、新しいバージョンのPHPUnitに何も含める必要はありません。たとえば、ブラウザでテストを実行します。

于 2013-03-22T15:20:03.203 に答える
1

私はZF2を使用しており、「PHPUnit_Framework_TestCase」を「\ PHPUnit \ Framework\TestCase」に置き換えたときに機能します。

于 2018-09-29T18:05:17.597 に答える
0

Centosまたは他のLinuxディストリビューションを使用している場合は、phpunitパッケージをインストールする必要があります。これは、yuminstallphpunitを使用して実行しました。リポジトリを追加する必要があるかもしれませんが、デフォルトのリポジトリでスムーズに動作する必要があると思います(CentOS 7を使用しています)

于 2016-03-26T14:05:07.640 に答える
0

WordPressコアテストを実行していて、最近PhpUnitをバージョン6にアップグレードした可能性があります。その場合、PhpUnitの名前空間への最近の変更によりコードが破損します。

幸い、 https://core.trac.wordpress.org/changeset/40547にコアテストへのパッチがあり、問題を回避できます。また、セットアップに含まれていない可能性のあるtravis.ymlへの変更も含まれています。その場合は、Travisパッチを無視するように.diffファイルを編集する必要があります。

  1. https://core.trac.wordpress.org/changeset/40547の下部から「UnifiedDiff」パッチをダウンロードし ます
  2. パッチファイルを編集して、必要がない場合はパッチのTravis部分を削除します。ファイルの先頭からこの行のすぐ上まで削除します。

    Index: /branches/4.7/tests/phpunit/includes/bootstrap.php
    
  3. / include /ディレクトリの上のディレクトリにdiffを保存します-私の場合、これはWordpressディレクトリ自体でした

  4. Unixパッチツールを使用してファイルにパッチを適用します。また、絶対ディレクトリ構造から相対ディレクトリ構造に移動するには、最初のいくつかのスラッシュを削除する必要があります。上記のポイント3からわかるように、includeディレクトリの前に5つのスラッシュがあり、-p5フラグによって削除されます。

    $ cd [WORDPRESS DIRECTORY]
    $ patch -p5 < changeset_40547.diff 
    

これを行った後、テストは再び正しく実行されました。

于 2017-05-18T14:52:45.867 に答える
0

注意:コマンドphp bin/console generate:doctrine:crudも作成TestControllerされるsrc/Testsため、サーバーを起動しようとしたときにエラーが発生する可能性がありますUnitTests。ファイルを削除して修正してください!

于 2019-01-16T10:06:26.823 に答える
0

私にとって、それは私が走ったからでした

$ phpunit .

それ以外の

$ phpunit

作業ディレクトリにすでに構成済みのphpunit.xmlファイルがある場合。

于 2019-02-11T19:44:46.693 に答える
0

私は追加するためにzend1.12バージョンでウィンドウ10でphp5.6を使用しています

require_once'PHPUnit / Autoload.php';

抽象クラスZend_Test_PHPUnit_ControllerTestCaseはPHPUnit_Framework_TestCaseを拡張します

働いた。上記のステートメントをControllerTestCase.phpファイルに追加する必要があります

于 2019-09-10T14:21:25.190 に答える
0

私はそれを動作させました

include("vendor/autoload.php");

テスト関数の上部にあります。

于 2021-06-11T20:03:09.627 に答える