2

私は単体テストに取り組んでおり、次のメソッドをテストするテストを作成しました:

public void DeleteTransport(int id)

   {
       SqlConnection sqlConnection = new SqlConnection(SQL_CONN);
       try
       {
           sqlConnection.Open();
           SqlCommand dbCommand = sqlConnection.CreateCommand();
           dbCommand.CommandText = string.Format("DELETE FROM dbo.Transports WHERE ID={0}", id);
           SqlDataAdapter dap = new SqlDataAdapter(dbCommand);

           var ds = new DataSet("Transports");
           dap.Fill(ds);
       }
       finally
       {
           sqlConnection.Close();
       }
   }

単体テストでは、存在しない ID をパラメーターとして指定しましたが、メソッドは SqlException をスローしません。

IDが存在しない場合に例外をスローする方法は?

私は使っている:

  • ビジュアル スタジオ 2012
  • TFS
  • SQL Server 2008
4

1 に答える 1

2

これは例外をスローせず、単に 0 行を更新します。

を使用して影響を受けた行の数を確認できますExecuteNonQuery()。それらが 0 の場合は、例外をスローできますが (計算コストが高くなります)、期待どおりの結果が得られます。

単体テストを書き換えて、影響を受ける行が 0 より大きいことをアサートすることもできます。

于 2013-09-13T13:06:07.347 に答える