C#Visual Studio 2013部分行覆盖率误报

时间:2015-02-16 20:07:55

标签: visual-studio-2013 code-coverage

IDE:Visual Studio Ultimate 2013。 语言:C# 操作系统:Windows 8

Visual Studio代码覆盖率将我的一条线标记为部分覆盖,当我认为它不应该处理“&&”时运营商。我简化了证明这个问题的逻辑。

考虑以下测试功能:

public static bool test(bool a, bool b)
{
    if (a && b) // Subject Line
    {
        return true;
    }
    return false;
}

现在考虑以下测试代码:

test(true, true);

Visual Studio将主题部分报告为主题。我希望它只被标记为部分测试(假,真)或测试(假,假)情况。我可以使用以下一个序列将其标记为已覆盖:

test(true, true);
test(false, true);

test(true, true);
test(false, false);

我进一步简化了这个问题。以下主题行标记为部分:

bool a = true;
bool b = true;
if (a && b){} // Subject line

以下主题行标记为涵盖:

bool b = true;
if (true && b){} // Subject line

任何人都知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

返回false不会被命中。这是一个替代方案,每条线都被覆盖。

public static bool test(bool a, bool b)
{
    return (a && b);
}