根据微软的文档,部分覆盖代码是指"...在一行中一些代码块未被执行。" 简单来说就是:
给定以下方法:
public List<string> CodeUnderTest()
{
var collection = new List<string> { "test1", "test2", "test3" };
return collection.Where(x => x.StartsWith("t") && x == "test2").ToList();
}
And this test:
[TestMethod]
public void Test()
{
var result = new Class1().CodeUnderTest();
CollectionAssert.Contains(result, "test2");
}
代码覆盖率结果显示,表达式
x.StartsWith("t") && x == "test2"
只被部分覆盖。我不确定这是如何可能的,除非编译器或CLR有一些急切的条件匹配机制,但也许我只需要解释一下。
||
与多个布尔条件也是一样的。 - lukiffer||
是有意义的,但是使用&&
就没有意义了——如果&&
语句评估为 true,它怎么可能跳过任何条件呢?我现在遇到了这个问题,感觉很疯狂。完全没有意义。 - BrainSlugs83