从 Microsoft 的文档中,部分覆盖的代码是“......该行中的某些代码块没有被执行”。我对这个很困惑(为简洁起见):
鉴于此方法:
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 有某种急切的条件匹配的东西,但也许我只需要解释一下。