3

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

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

if (true || false)

if (false && true)

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

在此处输入图像描述

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

我认为这是一个错误,但是,我只想明确一点,我没有任何误解。你有什么理由可以部分触及 if 语句,尽管提出了真正的语句?

4

1 回答 1

2

我的猜测是,由于测试变量为真,因此从未跳过 if 正文。有条件的 and 被编译成类似于

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

标有 1 的行永远不会执行,因此您的部分覆盖范围。

于 2012-08-30T08:44:29.270 回答