コードカバレッジの記録に 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 ファイルを手動で削除してください。