繁体   English   中英

如何确定此处未覆盖哪些块?

[英]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块。 现在执行的测试具有以下属性:

  • 测试1:返回成功, ListOfObjs中为0 ,不匹配,添加成功。
  • 测试2:返回成功,有2ListOfObjs1场比赛Id添加。

我尝试过的

  • 添加在ListOfObjs中具有1的测试(不匹配)会成功添加。 我认为问题可能与以下事实有关:它没有涵盖0匹配的Any情况。

这听起来像你没有一个测试,执行状态并不成功-换句话说,你的第一个操作数&&表达式是true所有测试,这样你就不会检查它的相关性。

(通常,如果您可以在不破坏任何测试的情况下删除一些生产代码,则这是一个不好的信号-或表明它没有功能,例如优化)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM