VS2012 中的代码覆盖率未显示用于 Dapper 的动态类型对象
本文关键字:Dapper 动态 类型 用于 对象 显示 代码覆盖率 VS2012 | 更新日期: 2023-09-27 18:36:43
我们正在使用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;
}
}
我认为问题
注释 =(延迟。评论??'"'")
延迟。注释不为 null,因此此检查永远不会执行。使用临时变量并从中获取值
像这样的东西
var a= delay.Comment;
var data = new
{
EquipmentID = delay.EquipmentID,
DelayID = delay.DelayCode,
StartTime = delay.StartTime,
EndTime = delay.EndTime,
Actual = delay.Actual,
Comment = a ?? ""
};