.net - 独特的 CodeCoverage 突出显示

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

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

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

if (true || false)

if (false && true)

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

enter image description here

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

我认为这是一个错误,但是,我只是想澄清一下,我没有任何误解。您是否看到可以部分触及 if 语句并且引发 true 语句的任何原因?

最佳答案

我猜这是因为 if 主体从未因为测试变量为真而被跳过。有条件的并且被编译成类似于

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

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

关于.net - 独特的 CodeCoverage 突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192356/

相关文章:

c# - 提高 DevEx WPF 网格的性能

.net - MSBuild 错误 MSB3021 : Unable to copy file. 找不到文件 'obj\Release\myWebProject1.dll'

java - JMockit:测试覆盖抽象方法的方法

unit-testing - 使用 Chutzpah 运行 Typescript qUnit 测试

c# - 将类型引用类型设置为 null 不会影响复制的类型吗?

c# - 查看源代码中的viewsate ["x"]和__viewstate有什么区别?

visual-studio - Visual Studio 性能和加载项

c++ - 字符串转 float ,C++实现

c# - 有没有办法显示实现接口(interface)方法的智能感知注释?

java - JPA 2.0 为单元测试禁用 session 缓存