【发布时间】:2012-10-18 05:08:53
【问题描述】:
从 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 有某种急切的条件匹配的东西,但也许我只需要解释一下。
【问题讨论】:
-
值得注意的是,在多个布尔条件下使用
||也是如此。 -
当然
||有意义,但&&没有意义——如果&&语句的计算结果为真,它怎么可能跳过任何条件? - 我现在遇到这个问题,这很疯狂。零意义。
标签: c# unit-testing mstest code-coverage