Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS2012中的代码覆盖率未显示用于Dapper的动态类型对象_C#_Visual Studio 2012_Integration Testing_Dapper - Fatal编程技术网

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

C# VS2012中的代码覆盖率未显示用于Dapper的动态类型对象,c#,visual-studio-2012,integration-testing,dapper,C#,Visual Studio 2012,Integration Testing,Dapper,我们正在使用VS2012 Ultimate(感谢BizSpark!),并且我们已经开始进行集成测试,以确保我们的简洁查询能够与循环中的DB一起工作。我试图确保所有数据库相关类的代码覆盖率达到100% 在我们的一个类中,来自AddDelay()函数测试的代码覆盖率报告显示,声明和初始化数据匿名对象的行没有被覆盖,但是它必须是Execute才能工作的。传入了一个模拟对象,一切似乎都正常,但我不明白为什么该方法的代码覆盖率不是100% 如果报告是一个超级简单的函数,并且data对象作为一个参数传递给e

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

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

如果报告是一个超级简单的函数,并且
data
对象作为一个参数传递给execute函数,那么有什么建议说明为什么报告显示它没有包含在内

public bool AddDelay(延迟信息模型延迟)
{
常量字符串sql=@“插入设备延迟(设备ID、延迟ID、开始时间、结束时间、实际值、注释)值(@EquipmentID、@DelayID、@StartTime、@EndTime、@Actual、@Comment)”;
使用(IDbConnection=DataFactory.CreateOpenConnection())
{
var数据=新
{ 
EquipmentID=delay.EquipmentID,
DelayID=delay.DelayCode,
StartTime=delay.StartTime,
EndTime=delay.EndTime,
实际值=延迟。实际值,
注释=(delay.Comment???)
};
con.Execute(sql、数据);
返回true;
}
}
我认为问题在于
注释=(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 ?? ""
            };

就这样!我忘记了coalesce操作符将是编译器的一个逻辑分支。我编写了另一个测试,注释为null,现在我们已经涵盖了该代码。谢谢你接受我愚蠢的疏忽,这让我发疯了!