php testrunnerでautotestを行ったがエラーがでた windows
まずはcompileコマンドをうちその後にautotestのコマンドを打ちます
vendor\bin\testrunner compile -p vendor\autoload.php
-aがautotestのコマンドです。
vendor\bin\testrunner phpunit -p vendor\autoload.php -a tests
そうするとファイルの監視はしているのですがエラーが発生してしまいます。
[InvalidArgumentException]
There are no commands defined in the “D” namespace.
Aplication.phpのfind関数の中で例外を吐いています。
if文を見ると:を識別していてphp.iniのパスがコマンドの箇所に何故か入力が入ってしまって例外になってしまってました
「D:\xxxxx\php.ini」な感じで。
テストランナーは以下の順番にファイルを呼んでました。
1.バッチファイルでバッチファイルを呼んでいる
D:\dev\workspace_netbeans\group_nico\nico_slim\vendor\bin\testrunner.bat
2.拡張子が無いPHPのtestrunnerを呼び出している。
D:\dev\workspace_netbeans\group_nico\nico_slim\vendor\piece\stagehand-testrunner\bin\testrunner.bat
3.PHP処理
D:\dev\workspace_netbeans\group_nico\nico_slim\vendor\piece\stagehand-testrunner\bin\testrunner
\Stagehand\TestRunner\CLI\TestRunnerApplication\Application\run()
\Stagehand\TestRunner\CLI\TestRunnerApplication\Application\doRun()
▼ここで例外
\Stagehand\TestRunner\CLI\TestRunnerApplication\Application\find()
どうやらPHPの呼び出しが二回呼ばれている
一度目のコマンドがphpunit
二回目はphp.iniのパスがコマンドになって例外。
半日悩んだ結果2のtestrunner.batをよく見たところコメントにこんなのが書いてありました。
「Set environment var PHP_COMMAND to the location of your php.exe」
もちろん、空の時は環境変数をsetする処理を書いてあったのですが、
改めて環境変数にPHP_COMMANDを作ってそこにphp.exeまでのパスを追加したところ成功しました。
バッチ実行中で設定した環境変数はPHPから取れないのかな。
解決したのでまぁヨシ。
全く同じ現象につまづき、検索してこの記事に辿り着きました。
> 改めて環境変数にPHP_COMMANDを作ってそこにphp.exeまでのパスを追加したところ成功しました。
こちらの「環境変数に設定」とは具体的にどのような設定をしているのかご教授頂けると嬉しいです。
Windowsのシステム詳細設定→環境変数 から開いた場所にPHP_COMMANDを設定したのですが、うまくいかなくて悩んでおります。。
>inarinさん
遅いレスすみません。
>>Windowsのシステム詳細設定→環境変数 から開いた場所にPHP_COMMANDを設定
私はそこのユーザー環境変数にPHP_COMMANDを追加して再起動したらうまく動作しました。