VS2012中的代码覆盖率未显示用于Dapper的动态类型对象

时间:2013-10-24 04:49:53

标签: c# visual-studio-2012 integration-testing dapper

我们正在使用VS2012 Ultimate(感谢BizSpark!),我们已经开始进行集成测试,以确保我们的Dapper查询正在循环中使用数据库。我正在努力确保所有数据库相关类的100%代码覆盖率。

在我们的一个类中,来自我们的AddDelay()函数的测试的代码覆盖率报告显示,未涵盖声明和初始化数据匿名对象的行,但它必须是Execute才能工作。有一个模拟对象被传入,一切似乎都在工作,但我无法弄清楚为什么代码覆盖率不是该方法的100%。

有关为什么报告显示它没有被覆盖的任何建议,因为它是一个超级简单的函数,并且data对象作为参数传递给execute函数?

    public bool AddDelay(DelayInformationModel delay)
    {
        const string sql = @"INSERT INTO EquipmentDelay(EquipmentID, DelayID, StartTime, EndTime, Actual, Comment) VALUES (@EquipmentID, @DelayID, @StartTime, @EndTime, @Actual, @Comment)";

        using (IDbConnection con = DataFactory.CreateOpenConnection())
        {
            var data = new 
            { 
                    EquipmentID = delay.EquipmentID, 
                    DelayID = delay.DelayCode, 
                    StartTime = delay.StartTime, 
                    EndTime = delay.EndTime, 
                    Actual = delay.Actual, 
                    Comment = (delay.Comment ?? "")
            };

            con.Execute(sql, data);
            return true;
        }

    }

1 个答案:

答案 0 :(得分:2)

我认为问题与  评论=(delay.Comment ??“”)

delay.Comment不为null,因此该检查永远不会执行。 使用temp变量并在其中获取值

类似这样的事情

var a= delay.Comment;
var data = new 
            { 
                    EquipmentID = delay.EquipmentID, 
                    DelayID = delay.DelayCode, 
                    StartTime = delay.StartTime, 
                    EndTime = delay.EndTime, 
                    Actual = delay.Actual, 
                    Comment = a ?? ""
            };