繁体   English   中英

MSTest显示复合布尔表达式的部分代码覆盖率

[英]MSTest Shows Partial Code Coverage on Compound Boolean Expressions

从微软的文档中,部分覆盖的代码是“......其中一些代码块没有被执行。” 我非常难过这个(简化为简洁):

鉴于此方法:

public List<string> CodeUnderTest()
{
    var collection = new List<string> { "test1", "test2", "test3" };
    return collection.Where(x => x.StartsWith("t") && x == "test2").ToList();
}

而这个测试:

[TestMethod]
public void Test()
{
    var result = new Class1().CodeUnderTest();
    CollectionAssert.Contains(result, "test2");
}

代码覆盖率结果显示表达式x.StartsWith("t") && x == "test2只是部分覆盖。我不确定这是怎么可能的,除非编译器或CLR有一些急切的条件匹配的东西,但也许我只需要解释一下。

条件AND运算符(&&)执行其bool操作数的逻辑AND,但仅在必要时才计算其第二个操作数。

http://msdn.microsoft.com/en-us/library/2a723cdk(v=vs.100).aspx

所以你会期望双方都被覆盖

也许它抱怨的是你没有测试-ve路径,即你的系列是否

var collection = new List<string> { "test1", "test2", "test3", "not_this_one" };

这样你就可以测试x.StartsWith("t")为T / F,因为目前只有T路径正在测试该条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM