--> -->
最初セットアップで色々回り道をしたのでその事について書いたのですが、結局自分の勘違いだということが分かりましたので、内容を変えてLaravel5.4+php5.6+dusk1.1でコードカバレッジを取得するについて書こうと思います(^^;)
ちなみに最初の勘違いというのは以下に起因するものです(書くんだ・・・)。
導入時には、app/Providers/AppServiceProvider.phpに以下を追加します。
1 2 3 |
|
しかしPHPStormだと1行目のenvironment()に警告が出ます。ちょっと探しても見つからなかったので、Laravelのバージョンが何か違うのかなーと思って以下のように修正してしまいました。
1 2 3 |
|
ところがこれは完全に誤りです。この条件式では、.envのAPP_ENVがlocal'且つ'testingでないとDuskServiceProviderが登録されません。従ってphp artisan dusk:installを実行しようにも「There are no commands defined in the "dusk" namespace.」というエラーが出て、install ができません。
その結果色々手動でいじって、沼に填まってしまいました。
結論:PHPStormが警告を出しても一度疑って実行してみましょう(笑)
さて、本題のduskでカバレッジです。
結論だけさくさく書きます。
composer require --dev phpunit/phpcov~
以上です(笑)。これで、base_path() . "/build/dusk"に*.covファイルが作成され、storage/logs/coverage_dusk.xmlにカバレッジ結果が出力されるようになります。*.covファイルの作成先は改変コードの下から5行目あたりに書いてありますので、好みの場所に変えてください。私はstorage/logs/cov/duskにしました。
次に、これをhtmlに出力します。
vendor\bin\phpcov merge --html storage\logs\coverage_html storage\logs\cov
すると、storage/logs/coverage_htmlにHTMLでカバレッジレポートが出力されます。
duskの*.covとphpunittest(cli)の*.covをマージするため、まずはphpunit.xmlの<logging>要素に出力先を指定します。
1 2 3 |
|
次に、duskの方はphpunit.xmlのwhitelistは読んでくれないので、先ほど修正したコードDuskServiceProvider.php内に記述します。
1 2 3 4 5 6 7 |
|
こんな感じです。
phpunit、duskをそれぞれ実行して*.covファイルができたら、phpcovで双方の *.cov ファイルをマージします。
vendor\bin\phpcov merge --html storage\logs\coverage_html storage\logs\cov
こうすると、phpunittestとduskの試験結果のカバレッジがマージされたHTMLが作成されます。
目指せ、カバレッジ100%!(笑)
ドキュメントによると「(ダースク:夕暮れ)」だそうです。ということはこれはダスキンではなくて「ダースキン」?(そんなわけはない...) |
}}