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
任何人都知道发生了什么事?
答案 0 :(得分:0)
返回false不会被命中。这是一个替代方案,每条线都被覆盖。
public static bool test(bool a, bool b)
{
return (a && b);
}