4

私たちのサイトでコードカバレッジを決定しようとしているときに問題が発生しています。3つのアプリで単体テストを実行しているときにPHPUnitでhtmlコードカバレッジレポートを生成しています。公開アプリ、管理アプリ、レポートアプリがあります。アプリはコードを共有しているので、どういうわけかこれらを1つのコードカバレッジレポートにまとめたいと思います。

コードカバレッジは、テストが「触れる」ファイルのカバレッジのみを計算しているように見えるため、完全にテストされていないファイルは計算に使用されていません。これらの未使用のファイルを計算に取り込む方法を知っている人はいますか?カバレッジジェネレータに特定のディレクトリを使用して計算するように指示して、触れられていないファイルをプルする方法はありますか?プロジェクトのルートに設定されたphpunitの構成ファイルにホワイトリストを設定しています。すべてのコメント、回答、およびちょっとしたアドバイスを歓迎します。

4

5 に答える 5

5

構成ファイル<whitelist>でを設定している場合は、カバーされていないすべてのファイルが表示されますパスに問題がある可能性があります。絶対パスを試して、一部のファイルのカバレッジが 0% になることを確認してから、相対パスが機能するようにしてください。phpunit.xml

カバレッジを組み合わせるために、私が知っているphpunitでできることはあまりありません。カバレッジの結果 (PHPUnit_Coverage パッケージ) を手動で組み合わせて、それらをレンダリングする方法を理解することもできますが、手動で行う必要があります。少なくとも、あなたのためにそれを行うプロジェクト/ツール/方法を知りません。

最も簡単な方法は、1 回の phpunit 実行で 3 つのテストスイートをすべて実行し、対象の部分のコード カバレッジを生成することです。

于 2011-04-21T07:51:35.080 に答える
2

<whitelist processUncoveredFilesFromWhitelist="true">次のように使用します。

<filter>
  <whitelist processUncoveredFilesFromWhitelist="true">
    <directory suffix=".php">../folder/</directory>
  </whitelist>
</filter>
于 2012-11-10T12:14:15.940 に答える
0

私は同じ問題に直面し、テスト スイートを実行する前に (すべてのクラスとパブリック メソッドに対して) テスト スタブの生成を追加しました。phpUnit にはそのためのオプションもあります。

http://www.phpunit.de/manual/current/en/skeleton-generator.html

于 2011-04-22T02:58:09.857 に答える
-1

これはおかしなことに聞こえるかもしれませんが、プロジェクトフォルダーを再帰的にループし、見つかったすべてのファイルに対してrequire_onceを実行するテストケースを作成してみませんか?これにより、XDebugは必要なファイルごとに新しいコードカバレッジhtmlファイルを作成できるようになります。

于 2011-04-22T02:52:57.300 に答える
-1

PHPUnit は、実際に実行されたファイルの文字通りカバレッジ データを提供する XDebug を使用していると思います。デバッガーはそれらを認識しないため、実行されたことのないファイルのデータを提供することはできません。PHPUnit 機構に手作業でパッチを適用して、アプリケーション内にあると思われるすべてのファイルのリストを、XDebug から返される結果に追加することができます。

PHP テスト カバレッジ ツールの動作は異なります。アプリケーションの一部であると思われるすべてのファイルのリストを与えます。このリストを作成するのに役立ちます。(これは、最初のソリューションにパッチを適用する必要があるリストと同じです)上記のすべてのファイルを計測し、テスト カバレッジ データを収集します。取得するカバレッジ データには、すべてが正しく含まれています。PHPUnit で問題なく動作するはずです。

さらに進むことができます。「個別の」アプリケーションごとにテスト カバレッジを作成し、個別に実行できます。次に、それらすべてのカバレッジ データを結合して、セット全体のカバレッジを確認できます。

于 2011-04-20T23:33:00.447 に答える