奇特的CodeCoverage突出显示

时间:2012-08-30 07:57:00

标签: .net visual-studio unit-testing code-coverage

当您在Visual Studio中运行测试(使用已激活的CodeCoverage)时,代码会突出显示,以显示哪些代码部分已执行,哪些部分未执行。

有三种不同的突出显示,未触摸区域触摸区域部分触摸区域。以下两个伪代码显示了部分触摸代码的示例。

if (true || false)

if (false && true)

然而,当我运行测试时,我想知道我的代码突出显示。蓝色背景表示代码已完全触摸,而深橙色表示代码已被部分触摸。 (最后一行的亮点是当前行

enter image description here

这根本没有意义。由于if语句是由逻辑AND 操作构建的,因此必须完全触及它才能输入true语句的代码。

我认为这是一个错误,但是,我只想清楚我没有任何误解。你是否看到任何理由可以部分触及if语句,虽然提出了真实的陈述?

1 个答案:

答案 0 :(得分:2)

我的猜测是因为测试变量为真,所以从未跳过if体。条件和编译为类似于

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

标记为1的行永远不会执行,因此部分覆盖。