レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

MakeGoodが動かないを解決するアプローチ(Windows8+Apache+PHPUnit on x64)

Windows環境でEclipseのMakeGoodを使ったテスト駆動開発環境の構築に苦戦しましたが、
無事動く環境の構築が完了しましたので共有しておきます。
情報が多いようでどれも断片的だったり環境が違ったりで、
なかなか必要な情報にありつくことができませんが結論は簡単でした。

MakeGoodのWindows環境構築の結論

環境自体は人それぞれで全く同じという事は皆無だと思いますが、
結論から申しますと、MakeGoodを使うなら大きくは以下の2点が注意点のはずです。

  • PHPUnitはComposerでインストールする(.pharファイル指定ではうまくいかない)
  • 「piece/stagehand-testrunner」を追加でインストールする。

 

その為のcomposer.json設定は以下のようになりました。

尚、私の現在開発環境はPHP5.6であるため、
PHPUnitも対応するバージョンの最終版5.7.27をインストールします。
PHPUnit6 以降は、PHP7が必要になります。

この点以外は他のサイトで紹介されているインストール手順と、
概ね同じステップでインストールする事ができます。

 

プロモーション

Google or AdMax Promotion (srvpos)

MakeGoodのエラー解消までの一連の右往左往

先に結論というか対策をご紹介してしまいましたが、
そこに至るまでには以下の様な過程で何度も試すという苦行となってしまいました。

何だかんだで3日は行き詰っていたように思います。

phpunit、skeleton-generatorをインストール

phpunit、skeleton-generatorをComposerを利用してインストールするには、
当然ですがComposer(パッケージ管理ツール)のインストールが済んでいる必要があります。

phpunit、skeleton-generatorをインストールすると、
以下のように依存するパッケージが展開されてインストールされます。

composer.json

コマンドプロンプトによる実行

ちなみに上記の

の部分で表示されているものはバグによるもののようで、
特に問題はないとのコミュニティー見解が回答されています。

Just after posting, I noticed that it was not a problem at all
(G訳)投稿した直後に、私はそれがまったく問題ではないことに気づいた

(引用)Package phpunit/phpunit-skeleton-generator is abandoned – The Bug Genie forums

 

「piece/stagehand-testrunner」【インストール前】のテスト実行

この状態で本来は動くはずなのですが、
MakeGoodでテストを実行するとEclipseコンソールにはエラーが表示されます。

エラーの中でも下の方に「Stagehand\TestRunner\DependencyInjection\…」と見えていますが、
当初は「Symfony\Component\…」の方ばかりを見ていて、
「Symfony」なんて使ってないけどなぁ・・と右往左往しました。

「Symfony」は使っていなくても
「phpunit/phpunit」をこComposerでインストールすると、
「- Installing symfony/yaml (v3.3.16): Loading from cache」のように、
一部のコンポーネントが依存関係でインストールされてきます。

ですので、その兼ね合いでエラーが出ているようです。

 

run-makegood-on-windows_st01

Fatal errorのメッセージ・MakeGoodが動かないを解決する

 

早くに「piece/stagehand-testrunner」の方に気づけば良かったのですが、
以下の回答を見るまで気づくことができませんでした。

ヒントになった関連情報

Stack Overflowの回答欄では、
以下のように記述して動かしていると紹介されています。

PHPUnit test in Eclipse 4.2 using Makegood is not running – Stack Overflow

This is my composer.json(以下はうまくいってないという例)

(略)

Answer

The composer

As well as the latest version of makegood and everything now works as expected.
Works on Kepler and Luna

(引用)php – PHPUnit test in Eclipse 4.2 using Makegood is not running – Stack Overflow

 

上記によれば「phpunit/phpunit」コンポーネントだけでなく、
個別に様々なものをインストールするように設定しています。

しかし、上記のcomposer.json指定で、
「phpunit/phpunit-skeleton-generator」「piece/stagehand-testrunner」以外は、
「phpunit/phpunit」のインストールを指定すると自動的にインストールされます。

※30は個別に「phpunit/phpunit-skeleton-generator」指定したもの。

 

ですので、composer.json指定方法の違いだけで、
「phpunit/phpunit」のインストールとほぼ同じことをしていると言えます。

明らかに違っていたのが「piece/stagehand-testrunner」の指定の有無でした。
※上記Stack Overflowで動かないと言っている原因は不明。

という訳で、インストールを行います。

/stagehand-testrunner」の導入を試行

「piece/stagehand-testrunner」は最新(2018/05/16現在)は「v4.2.0」でした。

要件は以下のように書かれています。
PHP5.6でも問題なさそうなので、インストールを行います。

(抜粋引用)piece/stagehand-testrunner – Packagist

 

Composer.jsonに追記します。

次に、コマンドプロンプトからUpdateを実行します。

無事インストールが完了しました。

これでエラーが消えてくれるといいのですが。

MakeGoodのテスト実行確認

では、実行を行います。
既に設定をいろいろ行っていますが、また別記します。

無事、1/5のエラーとして表示され、テストが正常に行われている事が確認できました。

run-makegood-on-windows_st02

テスト実行完了・MakeGoodが動かないを解決する

 

これで晴れて、Eclipseの環境設定例のご紹介に戻る事ができる^^

ここに至るまでの調査期間ほぼ3日。
テスト駆動開発でサクサクテストが何度でも回せる毎日、プライスレス・・・orz

 

テストのエラー確認と修正

上記ではテスト結果失敗が発生していますが、
テスト失敗の内容はコンソールタブの出力から確認ができます。

またテストケース側のソースでも該当箇所に「×」が表示されています。

run-makegood-on-windows_st04

コンソールでエラー箇所の確認と×印・PHPUnit_Framework_TestCase クラスが利用できません。は無視

 

通常はテストケースは正しく、処理ソース側に問題があるはずですが、
ここではテストケースの答えを誤らせてテスト失敗を生成していましたので、
テストケースの答えを正しく修正します。

run-makegood-on-windows_st05

テストケース側の修正(便宜上)・PHPUnit_Framework_TestCase クラスが利用できません。は無視

 

テストを再実行するとすべてのテストが成功したことがコンソールで確認できます。

run-makegood-on-windows_st06

テスト結果エラーなし(コンソール)・PHPUnit_Framework_TestCase クラスが利用できません。は無視

 

またMakeGoodタブのプログレスバーがグリーン表示になります。

run-makegood-on-windows_st07

テスト結果エラーなし(MakeGood)・PHPUnit_Framework_TestCase クラスが利用できません。は無視

 

ちなみに・・・

「PHPUnit_Framework_TestCase クラスが利用できません。」って表示は?

この状態では「PHPUnit_Framework_TestCase クラスが利用できません。」と、
表示されている状態になっているかもしれません。

この表示自体がされていても、
設定が正しく行えているのであれば実行ボタンは有効でテスト実行を行う事はできます。

run-makegood-on-windows_st03

メッセージ表示も実行可能・PHPUnit_Framework_TestCase クラスが利用できません。は無視

 

どうしても消したいという事であれば、以下手順で消せますが、
ComposerでPHPUnitをインストールしている以上は、

この表示があっても特に不都合な事は無いと言えます。

 


AdMax Promotion

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。