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 にある種の熱心な条件一致機能がない限り、それがどのように可能かはわかりませんが、説明が必要なだけかもしれません。