VS2012のコードカバレッジは、Dapperに使用される動的に型指定されたオブジェクトを表示しません。

c# dapper integration-testing visual-studio-2012

質問

私たちはVS2012 Ultimate(BizSparkありがとう)を使用しています。Dapperのクエリがループ内のDBと連携して動作するように、統合テストを開始しました。私はすべてのデータベース関連クラスのコードカバレッジを100%保証しようとしています。

私たちのクラスの1つでは、 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;
        }

    }

受け入れられた回答

私は問題と思う
コメント=(遅延。コメント? "")

delay.Commentは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 ?? ""
            };


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow