[英]How to determine what block isn't covered here?
我有一个这样的代码块(类/属性名称已更改以满足公司准则):
if (output.ExecutionStatus == RuleExecutionStatus.Success &&
!obj.ListOfObjs.Cast<ConcreteType>().Any(p => p.Id == o.Id))
{
obj.AddConcreteType(output.ConcreteObj);
}
在添加&& !obj.ListOfObjs.Cast<ConcreteType>().Any(p => p.Id == o.Id)
此行已被100%覆盖。 我在下面添加了一个测试,称为“ Test 2
。
因此,在添加了新测试之后,几乎100%覆盖了该块; 但我无法弄清楚没有涵盖的内容。 它指出没有覆盖1
块。 现在执行的测试具有以下属性:
ListOfObjs
中为0
,不匹配,添加成功。 2
在ListOfObjs
, 1
场比赛Id
, 不添加。 我尝试过的
ListOfObjs
中具有1的测试(不匹配)会成功添加。 我认为问题可能与以下事实有关:它没有涵盖0
匹配的Any
情况。 这听起来像你没有一个测试,执行状态并不成功-换句话说,你的第一个操作数&&
表达式是true
所有测试,这样你就不会检查它的相关性。
(通常,如果您可以在不破坏任何测试的情况下删除一些生产代码,则这是一个不好的信号-或表明它没有功能,例如优化)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.