问题描述
我有以下代码:
var isDuplicateCategoryIds = _query.Categories
.GroupBy(x => x.Id)
.Any(g => g.Count() > 1);
我有两个调用此代码的测试,一个有重复的 ID,另一个没有。
但是,openCover(在我们的 CI 服务器上使用)正在报告:
部分被测试覆盖(44 个条件中的 16 个)。
在本地,dotCover 报告 100%。
据我了解,openCover 使用了 IL 中生成的分支和条件,该语句的 IL 为以下 24 行(已删除命名符号):
IL_0001: ldarg.0 // this
IL_0002: ldfld
IL_0007: callvirt
IL_000c: ldsfld
IL_0011: dup
IL_0012: brtrue.s IL_002b
IL_0014: pop
IL_0015: ldsfld
IL_001a: ldftn
IL_0020: newobj
IL_0025: dup
IL_0026: stsfld
IL_002b: call
IL_0030: ldsfld
IL_0035: dup
IL_0036: brtrue.s IL_004f
IL_0038: pop
IL_0039: ldsfld
IL_003e: ldftn
IL_0044: newobj
IL_0049: dup
IL_004a: stsfld
IL_004f: call
IL_0054: stloc.0
我的问题是如何在此处获得报道?
顺便说一句:尝试这样做是否值得?我的测试涵盖了此代码所涉及的两个场景;骗子和没有骗子。在此之前执行的代码会检查 Categories
是否为空/空,并且在这种情况下不会调用此代码。因此,如果在幕后生成的这些条件中有一些是为此(我不知道它们是),那么这是一个有争议的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)