1

PHPUnitでモジュールテストを実行していて、テストのカバレッジレポートを取得したいと思います。私は過去にこれを成功させてきましたが、どういうわけか私はそれを再び機能させることができず、なぜそれがもはや機能しないのか分かりません。唯一の違いは、5.3ではなくPHP5.4を実行していることです。

テストは、execコマンドを使用してAntビルドファイルで実行されます。

<exec dir="${basedir}" executable="phpunit.bat" failonerror="${test.failonerror}">
    <arg value="--log-junit" />
    <arg value="${test.phpunit.log}" />
    <arg value="--coverage-clover" />
    <arg value="${test.phpunit.coverage.log}" />
    <arg value="--bootstrap" />
    <arg value="${test.phpunit.bootstrap}" />
    <arg value="${test.phpunit.testdir}" />
</exec>

テストを実行したときのAntログのスニペットは次のとおりです。

module-test-php:
     [exec] PHPUnit 3.6.12 by Sebastian Bergmann.
     [exec] .............
     [exec] Time: 5 seconds, Memory: 8.75Mb
     [exec] OK (13 tests, 113 assertions)
     [exec] Generating code coverage report in Clover XML format ... done

ログから、カバレッジレポートは機能するはずですが、レポートを開くと、これだけが表示されます。

<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1344329670">
  <project timestamp="1344329670">
    <metrics files="0" loc="0" ncloc="0" classes="0" methods="0" coveredmethods="0" conditionals="0" coveredconditionals="0" statements="0" coveredstatements="0" elements="0" coveredelements="0"/>
  </project>
</coverage>

ここで欠落している設定がありますか、それともカバレッジがゼロになるのはなぜですか?

アップデート

さらにテストを行ったところ、pharアーカイブに関連するバグが見つかりました。この問題が報告されました。

https://github.com/sebastianbergmann/php-code-coverage/issues/107

4

1 に答える 1

0

コードカバレッジは、ソース コード形式に関するものです。ソースコード形式は、変更を加えたソフトウェアのバリアントです。

phar ファイルはアーカイブです。Zend Encoder や Ioncube Encoder、さらには APC でエンコードされた PHP コードと同様に、コード カバレッジはこれらのファイルに対しては機能しません。さらに重要なことに、メトリックとしてのコード カバレッジは、これらのファイルに対して機能する意味がありません。

不思議に思うかもしれませんが、もう一度不思議に思って、なぜこのようになっているのかを考えてみてください。phar ファイルのコード カバレッジのレポートが役に立たない理由を、自分の言葉で説明してみてください。

于 2012-08-08T12:12:40.353 に答える