3

Visual Studioで(CodeCoverageをアクティブにして)テストを実行すると、コードが強調表示され、コードのどの部分が実行され、どの部分が実行されなかったかが示されます。

ハイライトには、未タッチエリアタッチエリア部分タッチエリアの3種類があります。次の2つの擬似コードは、コードが部分的に変更される例を示しています。

if (true || false)

if (false && true)

ただし、テストを実行すると、コードの強調表示について疑問に思います。青い背景はコードが完全にタッチされたことを示し、濃いオレンジはコードが部分的にタッチされたことを示します。(最後の行のハイライトは現在の行です)

ここに画像の説明を入力してください

これはまったく意味がありません。ifステートメントは論理AND演算で構成されているため、trueステートメントのコードを入力するには完全にタッチする必要があります。

これはバグだと思いますが、誤解がないことを明確にしておきたいと思います。ifステートメントに部分的に触れることができ、本当のステートメントが提起される理由はありますか?

4

1 に答える 1

2

私の推測では、テスト変数がtrueであるために、if本体がスキップされたことがないためです。条件付きで、次のようなものにコンパイルされます

if (!test)
    goto afterBody;  // 1
if (!(dummy != null))
    goto afterBody;  // 2
// body
afterBody:
// next statement

1でマークされた行は実行されないため、部分的にカバーされます。

于 2012-08-30T08:44:29.270 に答える