2

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

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

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

    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;
        }

    }
4

1 回答 1

2

我认为
Comment = (delay.Comment ?? "")有问题

delay.Comment 不为空,因此此检查将永远不会执行。使用临时变量并在其中获取值

像这样的东西

var a= delay.Comment;
var data = new 
            { 
                    EquipmentID = delay.EquipmentID, 
                    DelayID = delay.DelayCode, 
                    StartTime = delay.StartTime, 
                    EndTime = delay.EndTime, 
                    Actual = delay.Actual, 
                    Comment = a ?? ""
            };
于 2013-10-24T05:17:52.963 回答