web-dev-qa-db-ja.com

PhpStormからPHPUnitを実行しようとするとエラーが発生する

PHPUnitテストをIDE PhpStorm。

私はcomposerファイルを使用します:

{
    "require": {
        "phpunit/phpunit": "3.7.19"
    }
}

テストを実行すると、例外が発生します:PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.'

なにが問題ですか?私が含まれている梨インストールされたバージョンのテストは問題なく動作しました。

// [〜#〜] edit [〜#〜]サンプルテストクラス:

 class ReaderTest extends PHPUnit_Framework_TestCase
    {
        /**
         * @test
         */
        public function shouldGetReadedValue ()
        {
            $this->assertTrue(true);
        }
    }

// EDIT2トレース:

/usr/bin/php /tmp/ide-phpunit.php --no-configuration /path/to/my/project
Testing started at 14:53 ...
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Class "PHPUnit_Extensions_RepeatedTest" does not extend PHPUnit_Framework_TestCase.' in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:183
Stack trace:
#0 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(315): PHPUnit_Framework_TestSuite->__construct(Object(ReflectionClass))
#1 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(389): PHPUnit_Framework_TestSuite->addTestSuite(Object(ReflectionClass))
#2 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php(416): PHPUnit_Framework_TestSuite->addTestFile('/var/www/php-sh...')
#3 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php(96): PHPUnit_Framework_TestSuite->addTestFiles(Array)
#4 /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php(150): PHPUnit_Runner_BaseTestRunner->getTest('/var/www/php-sh...', '', A in /path/to/my/project/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 183

Process finished with exit code 255
19

この問題の解決策を見つけました。

ディレクトリの構成の編集で、テストカタログ(/path/to/my/project/tests)、このテストが適切に実行された後。

12

Composerを使用するときに同じ問題があります。

解決策は、テストファイルを独自のディレクトリに配置することです。これが私の作業中のphpunitです。すべてのテストをtestディレクトリに配置します。

<phpunit bootstrap="vendor/autoload.php" 
    colors="true"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="true">
    <testsuites>
        <testsuite name="Test Suite">
            <directory>test</directory>
        </testsuite>
    </testsuites>
</phpunit>

誰かが同じ問題を抱えている場合はそれが解決することを願っています.. :)

5
rahmat

上記のPiotrの回答のおかげで、これは私にとってうまくいきましたが、ここで私がしなければならなかったすべてのステップについて、もう少し正確な詳細を提供します。

動作させるための手順(PHPStorm 8.0.1でテスト):

1)In _Preferences > PHP > PHPUnit_ デフォルトの構成ファイルまたはデフォルトに何も設定されていないことを確認してくださいbootstrap file。

2)カスタムPHPUnit構成を作成する _Run > Edit Configurations >_ in the _Command Line_ subsection、and be to be to ::

a)セット _Custom working directory:_ 予定 _/absolute/path/to/vendor_。

b)「代替構成ファイルを使用する:」をチェックし、次のように設定します/absolute/path/to/vendor/your_app/(sub_app_if_applicable)/phpunit.xml.dist

次に、クラスとファイルを指定してスイート内の任意のテストクラスを実行するか、「構成ファイルで定義」をオンにして、構成に従ってそれらすべてを実行できます。

5
CommaToast

PHPUnit_Framework_TestSuite内で、このコード コンストラクターに存在

if (!$theClass->isSubclassOf('PHPUnit_Framework_TestCase')) {
   throw new PHPUnit_Framework_Exception(
      'Class "' . $theClass->name . '" does not extend PHPUnit_Framework_TestCase.'
   );
}

あなたのPHPUnit_Framework_TestCaseを拡張しているようですが、エラーはPHPUnit_Extensions_RepeatedTestを拡張していることを示唆していますPHPUnit_Extensions_TestDecoratorは最終的に拡張しますPHPUnit_Framework_Assert

PHPUnit_Framework_Assert
   |
   --PHPUnit_Extensions_TestDecorator
      |
      --PHPUnit_Extensions_RepeatedTest

エラーがPHPUnit_Extensions_RepeatedTestを拡張するテストを使用してTestSuiteを実行しようとしていることを示唆しているため、テストを再確認してください。代わりに、テストデコレータを使用してPHUnitを拡張しようとしていましたか?

http://docs.tadiavo.com/phpunit/www.phpunit.de/pocket_guide/3.1/en/extending-phpunit.html

これが、実際のテストとそれらの実行方法を確認せずに現在提供できるすべてのアドバイスです。

0
Jeremy Harris