2

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

私たちのクラスの 1 つで、AddDelay()関数のテストからのコード カバレッジ レポートは、データ匿名オブジェクトを宣言および初期化する行がカバーされていないことを示していますが、実行が機能するためにはカバーされている必要があります。渡されたモック オブジェクトがあり、すべてが機能しているように見えますが、そのメソッドのコード カバレッジが 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 が 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 ?? ""
            };
于 2013-10-24T05:17:52.963 に答える