2017-12-15 11 views
-5

コードカバレッジを持つphpunitを実行して、どのクラスのテストが少ないかを確認しました。PHPUnitコードカバレッジ偽陽性?

私は任意にこのようないくつかのDataFixtures(教義器具)などのフォルダとAdmin(ソナタ管理クラス)を除外し、これが結果です:

enter image description here

私はEntityフォルダがすべて赤であることに気づいたが、それ標準getterとsetterをたくさん持つクラスだけが含まれています。 Modelフォルダーの場合と同じことです。

をどうすればを無視してテストできますか?

+1

ゲッターとセッターの束を使ってクラスをテストする方法を尋ねていますが、それ以上のことはありませんか?その場合は、値と値を設定し、それを元に戻し、それが変更されていないかどうかを調べるテストを書くことができます。私はそれが一般的な方法で行うことができるかどうかを知るためにPHPをよく知っていません。そのようなテストは、通常は非常に低い値であり、100%のカバレッジなしでは生きているほうがよい傾向があります。 – ivarni

+0

はい、これらのクラスはフィールド、ゲッタ、セッタを持つエンティティのみです。実際の方法がテストされます。だからエンティティフォルダも除外することができましたか? – StockBreak

+0

私は、データオブジェクトの束のテストを書くことは大量の時間の無駄だと言いますが、最終的には除外したいかどうかはあなた次第です。それは意見になる。しかし、現在フォルダを除外すべきかどうか、あるいはgetterとsetterがほとんどであるオブジェクトをテストする方法についてはまだ質問がありますか? – ivarni

答えて

0

PHPUnitでは、yerテストの注釈を使って、@covers@coversNothingなどのカバレッジをどのように追跡するかを変更するいくつかの方法を提供しています。 @codeCoverageIgnoreを使用して、コードのセクションをカバレッジから除外することもできます。それらをドキュメントに覆われている使用方法:https://phpunit.de/manual/current/en/code-coverage-analysis.html

あなたはこれらの設定のいくつか変更するcommand line optionsを使用することができますテスト実行している:あなたの問題は、これらのエンティティに適用範囲を制限することに由来していない場合は

--strict-coverage   Be strict about @covers annotation usage. 
--disable-coverage-ignore Disable annotations for ignoring code coverage. 

を、メソッドが実際に呼び出されたかどうかを確認するためにどのテストを使用するのかを識別する必要があります。私はあなたがそれらを嘲笑したと想像することができたので、それはカバーされていません。

関連する問題