5

PHPUnit は他のプロジェクトではうまく機能しますが、Yii テストを実行しようとすると、(空のテストでも) 次の警告が表示されます。

1 件の失敗がありました:

1) 警告

警告: include(PHP_Invoker.php): ストリームを開くことができませんでした: No such file or directory in C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\vendor\yiisoft\yii\framework\YiiBase.php on line 423

警告: include(): 含めるために 'PHP_Invoker.php' を開けませんでした (include_path='.;C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\components;C:\Users\pumpkin\Documents\ GitHub\arhano\codebase\arhanoii\models;C:\xampp\php\PEAR') in C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\ vendor\yiisoft\yii\framework\YiiBase.php の423行目

phpunit/PHP_Invoker をインストールする必要があるようですが、Win では使用できない pcntl PHP 拡張機能が必要なため、不可能です。

この警告をミュートする方法を知っていますか? PHP_Invoker を使用せずに Windows で Yii テストを実行することは可能ですか?

4

5 に答える 5

8

これが私のために働いた解決策です: https://github.com/yiisoft/yii/issues/1907#issuecomment-14519537

見積もり:

  • pear.phpunit.deに行きました
  • 手動でダウンロードした PHP_Invoker ユーティリティ クラス
  • 娘の Mac でファイルを解凍しました (私は Windows を実行しています)
  • 「Invoker」ディレクトリを C:\xampp\php\pear\PHP の下に置きます
  • 「Invoker.php」ファイルを C:\xampp\php\pear\PHP の下に置きます。

私はWindows 7マシンを使用していますが、解凍はうまくいきました。Mac要らなかった…

いずれの場合もテストは正常に実行されますが、テスト中にエラーが発生するたびに、迷惑な長い「include(PHP_Invoker.php): ストリームを開くことができませんでした」というメッセージが表示されることはなくなりました。

于 2013-03-10T14:37:57.717 に答える
1

このチュートリアルに従って少し調整するとうまくいきました。

基本的に、Invoker リポジトリで複製します。Invoker はまだ動作しないと思いますが、PHPUnit のエラーを停止します。

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.phundament.com"
        },
        {
            "type": "package",
            "package": {
                "name": "phpunit/php-invoker",
                "version": "1.1.3",
                "source": {
                    "type": "git",
                    "url": "http://github.com/sebastianbergmann/php-invoker",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": [
                        "src/"
                    ]
                }
            }
        }
    ],
    "require-dev": {
        "phpunit/phpunit": "4.1.*",
        "phpunit/phpunit-selenium": "*",
        "phpunit/phpunit-skeleton-generator": "*",
        "phpunit/dbunit": "*",
        "phpunit/phpunit-story": "*",
        "phpunit/php-invoker": "*",
        "phpunit/phpunit-mock-objects": "*"
    }
} 
于 2015-11-19T15:45:02.917 に答える
0

@cweiske:その行は実際にはPHPUnitのautoload()によって使用されているため、変更できませんでした。

@Alex:ここでも同じ問題があります。その理由は、PHPUnitのPHP_InvokerがWindowsで機能しないためです。これは、UNIXシステムでのみ機能する「pcntl」という名前の拡張機能に依存しているためです。問題はWindowsで実行されているサードパーティのフレームワークに起因するため、Sebastian Bergmannはこの問題についてあまり気にしないと思います:https ://github.com/sebastianbergmann/php-invoker/issues/6

とにかく、テストは正常に実行されているようです。それで...

于 2013-01-09T09:47:54.223 に答える
0

The file is (PSR-0 compatible) PHP/Invoker.php, so you need to change the YiiBase.php and replace the _ with / there.

于 2013-01-01T08:25:03.843 に答える