web-dev-qa-db-ja.com

PHPUnitクラスTestCaseが見つかりません

PHPライブラリの作成に取り組んでおり、テストの作成を開始したい。エラーが発生しているFatal error: Class 'PHPUnit\Framework\TestCase' not found

私のプロジェクト構造は次のとおりです。メインディレクトリにはcomposer.json、すべてのクラスを含むsrc /ディレクトリ、unit /およびaccept /サブディレクトリを含むtests /ディレクトリがあります。実行しようとしているテストは、unit /ディレクトリにあります。コマンドラインインターフェイスを使用してテストを実行しているため、phpunit tests/unit/testMyClass.php

testMyClass.phpは次のようになります。

<?php
require 'vendor/autoload.php';
use PHPUnit\Framework\TestCase;

class MyClassTest extends TestCase {
    public function testCreateMyClass() {
        // Tests are written here
    }
}
?>

私のcomposer.jsonは:

{
    "require-dev": {
        "phpunit/phpunit": "4.8.*"
    }
    "autoload": {
        "classmap": [
            "src/"
        }
    }
}
14
Derek Spaulding

私は同じ問題を抱えていたので、namespacePHPUnit\Framework\TestCaseを使用する代わりに、テストクラスをPHPUnit_Framework_TestCaseクラスから拡張することで解決しました。プロジェクト構造を再構築した後、私にとってはうまくいきました。

tests/unit/testMyClass.php

<?php
require './vendor/autoload.php';

class MyClassTest extends PHPUnit_Framework_TestCase {
     public function testCreateMyClass() {
        // Tests are written here
     }
}
?>

composer.json

{
   "name": "root/project",
   "authors": [
      {
           "name": "watzerm",
           "email": "[email protected]"
      }
   ],
   "require": {
       "phpunit/phpunit": "5.4.*"
   },
   "autoload": {
       "classmap": [
           "src/"
       ]
   }
}

結果

$./vendor/bin/phpunit tests/unit/testMyClass.php

PHPUnit 4.8.27 by Sebastian Bergmann and contributors.

.

Time: 252 ms, Memory: 2.25MB

OK (1 test, 0 assertions)

これがあなたにとってもうまくいったかどうかを教えてください!

20
mwatzer

PHPUnitの新しいバージョンで問題を解決しました。

wget https://phar.phpunit.de/phpunit-6.0.phar
php phpunit-6.0.phar -c app/

出力:

PHPUnit 6.0.10 by Sebastian Bergmann and contributors.

..                                                                  2 / 2 (100%)

Time: 486 ms, Memory: 14.00MB

OK (2 tests, 3 assertions)

これは、Symfony 2.8 LTSおよびPHPunit 6.0 githubリポジトリで動作しています- https://github.com/nikola-bodrozic/PHPUnit-Symfony28

3
Nikola Bodrozic