0

コードカバレッジの記録に emma を使用しています。特にライン カバレッジ (またはライン %) に関心があります。 自動化によって、ソース コードのライン カバレッジを増やすことを計画しています。最初にシナリオを手動で実行し、emma を使用して line% の増加があるかどうかを確認します。もしあれば、先に進んでその機能を自動化します。シナリオを手動で実行すると、目的の結果が表示される特定の IF-ELSE ブロックに行き詰まっています。しかし、エマはそのセリフをカバーされたものとして記録していません。これが以下のサンプルコードです

    if (a == null) 
             {
                 final class1 c1 = new class1();
                 if (c1.isSE()) 
                 {
                    c1.sendRedirect(req, res, "error.html");
                 } 
                 else 
                 {
                     c1.sendRedirect(req, res, "testpage.html");
                 }
                 return;
             }

emma レポートでは、最初の 3 行が緑色です。ただし、以下の行は emma レポートで赤字になっています (つまり、カバーされていません)。

c1.sendRedirect(req, res, "error.html");
c1.sendRedirect(req, res, "testpage.html");
return;

しかし、シナリオを手動で実行すると、望ましい結果が表示されます (つまり、testpage.html ページにリダイレクトされます)。

注: 以下のトラブルシューティングを試しました ( http://emma.sourceforge.net/faq.htmlに記載) 。

3.18. EMMA は、私が何らかの入力を行ったにもかかわらず、インストルメント化されたクラスが 0 であると報告し始めました...

EMMA インスツルメンテーションのインクリメンタルな性質につまずくかもしれません。EMMA 対応のビルドをデバッグするときは、EMMA をクリーンな状態にリセットするために、クリーンな再コンパイルを試みるか、すべてのインストルメンテーション出力ディレクトリとすべての.em/ .ec ファイルを手動で削除してください。

4

1 に答える 1

1

これを参照する将来の人々に役立つかもしれません...

Jars.you を計測すると、「デバッグ モードなしでコンパイルされたクラス」でいくつかのクラスを一覧表示している emma が表示されます。計測時にこれらのメッセージが表示された場合、ライン % カバレッジは生成されません。これを克服するには、これらのクラスをデバッグ モードでコンパイルするか、それらのクラスが不要な場合は除外することを検討する必要があります。通常、上記のメッセージが表示されているクラスはサードパーティ クラスです。

インストルメント中に「Class Compiled without Debug Mode」というメッセージが表示されない場合は、レポートにライン カバレッジが表示されます。

于 2014-01-23T01:45:26.043 に答える