2

simpletest フレームワークで単体テストを行っており、コード カバレッジ レポートに xdebug を使用しています。私の問題を説明させてください:

  • クラスの名前がpagination.phpであると仮定してテストしたいクラスがあります。
  • テスト用に別のクラスを作成します。ページネーション クラスをテストするために 2 つのテスト ケースを作成しました。
  • 2 つのテスト ケースで約 12 のアサーションがあり、正しい結果「合格」が得られます。
  • ここで、コード カバレッジ レポートを生成したいと考えています。このために、xdebug を使用して、テスト ケースがすべてのコードをカバーしているかどうかを示します。xdebug_start_code_coverage() 関数を使用し、結果を表示するには xdebug_get_code_coverage() 関数を使用します。

問題は、 xdebug_get_code_coverage() を出力すると、ファイル名、行番号、実行時間の2次元連想配列が得られることです。結果は次のようになります。

array
  'path/to/file/pagination.php' => 
    array
      11 => int 1
      113 => int 1

11行目は授業開始、113行目は授業終了です。クラス内に入らない理由と、クラス関数のステートメントカバレッジを提供しない理由がわかりません。しかし、私のテストケースは問題ないように見え、すべての条件と分岐カバーが機能していることを知っています。

この点で私を助け、この問題を解決する方法を教えていただければ幸いです。

多分私はここで何かを逃した。さらに何かご希望がございましたら、お知らせください。

4

2 に答える 2

1

呼び出されたメソッドを持つクラスに XDebug-CC を実装しましたが、正常に動作します。このツールが「実行可能コード」をどのように定義するかについて少し混乱していると言わざるを得ませんが、メソッドは確実に考慮されています。

xdebug_start_code_coverage() と xdebug_get_code_coverage() の場所を確認してください。これらは最初と最後に呼び出す必要があるためです。

また、機能がリリースされてから精度が向上したため、XDebug バージョンを確認することもできます。

一番

ラファエル

于 2011-01-29T13:11:40.143 に答える
0

SimpleTest には、セットアップがかなり簡単なカバレッジ拡張機能があります。IIRC は svn のみであり、通常のパッケージ化されたダウンロードではありません。(通常は simpletest/extensions/coverage/ にあります)

実装方法の例については、次の記事を参照してください。

http://www.acquia.com/blog/calculating-test-coverage http://drupal.org/node/1208382

于 2012-03-19T14:49:57.673 に答える