openCover 报告意外的低覆盖率

问题描述

我有以下代码:

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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...