当前位置: 首页 > 知识库问答 >
问题:

代码覆盖不标记使用作为传递的行

汪安然
2023-03-14

我不知道为什么我的代码覆盖率会出现这种情况,也许有人知道这种情况。正如您所知,代码覆盖率在到达时为蓝色,未到达时为红色,部分到达代码行时为黄色。

我编写了一个小映射器,它接收一个IDataReader并通过反射变成对象。

internal IEnumerable<T> Convert<T>(System.Data.IDataReader dataReader) where T : new()
{
    var columns = this.GetColumns(dataReader); // get a list of column name... not important.
    var result = new List<T>();

    while (dataReader.Read())
    {
        var nuevoObjeto = new T();  // <-- this line is yellow in code coverage.

        foreach (var item in columns)
        {
            var pi = nuevoObjeto.GetType().GetProperty(item);

            pi.SetValue(nuevoObjeto, dataReader[columns.IndexOf(item)]);
        }

        result.Add(nuevoObjeto);
    }

    return result;
}

正如你所看到的,黄线不是一个条件,比如IF或WHILE。。。这只是一个简单的“新T”,如果您调试这段代码,调试会很好地达到这一行,事实上,测试是绿色的,并具有预期的结果。

测试执行以下步骤。

  1. 假IDataReader(含nSubstitute)

希望有人知道为什么会这样。。。谢谢

共有2个答案

鲜于允晨
2023-03-14

尝试测试它也与结构或添加类约束到泛型方法-http://www.codeproject.com/Tips/175592/Code-Coverage-And-Generics

郭远
2023-03-14

为该行生成的IL相当于:

T nuevoObjeto = (default(T) == null) ? Activator.CreateInstance<T>() : default(T);

这允许将结构用于泛型类型,因为它们满足new约束。

所以,如果你想要100%的代码覆盖率,用一个结构测试你的泛型方法,或者改变约束,要求泛型类型是一个使用的类,其中T: class

 类似资料:
  • 我正在使用Mocha测试我的NodeJS应用程序。我不知道如何使用它的代码覆盖功能。我试着谷歌它,但没有找到任何适当的教程。请帮忙。

  • 我正在尝试使用JaCoCo-javaagent传递VM参数来获得代码覆盖率 -Java agent:/test/jaco co/jaco agent . jar = dest file =/test/jaco co/jaco co . exec,includes=com。*,append=true 我能在jacoco中获得一些价值。执行文件,但无法获取覆盖率报告。我怎样才能把jacoco转化成。执

  • 代码覆盖是查找未被测试执行的代码区域的过程。不过要记住的是这并不能说明你测试代码的有效性。 在requirements.txt文件中添加依赖包: coverage==4.4.2 然后,我们在manage.py中新增一个命令: import coverage COV = coverage.coverage( branch=True, include='project/*',

  • 这是一个重要的可量化指标,如果代码覆盖率很高,你就可以放心的修改代码,在发版本的时候也能睡个安稳觉。否则就是拆东墙补西墙,陷入无尽的 bug 诅咒中。 那么在 OpenResty 里面如何看到代码覆盖率呢?其实很简单,使用 LuaCov 可以很方便的实现。 我们先了解下 LuaCov,这是一个针对 Lua 脚本的代码覆盖率工具,通过 luarocks 来安装: luarocks install l

  • 问题内容: 我正在使用Mocha测试我的NodeJS应用程序。我无法弄清楚如何使用其代码覆盖功能。我尝试使用Google搜索,但没有找到任何合适的教程。请帮忙。 问题答案: 您需要一个额外的库来覆盖代码,而伊斯坦布尔的强大和便捷将使您震惊。通过Mocha测试后,请尝试以下操作: 现在,只需将命令nyc放在现有测试命令的前面,例如:

  • 我为iOS编写了测试用例 XcodeCoverage 查找代码覆盖率。现在,我希望对我的android测试用例也这样做。有没有与Android Studio本身兼容的工具 任何建议/参考链接都会很有帮助。