SqlConnection命令在删除时不会抛出异常

时间:2013-09-13 13:04:21

标签: c# sql database unit-testing tdd

我正在进行单元测试,我做了一个测试,测试以下方法:

  

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不存在,如何抛出异常?

我正在使用:

  • Visual Studio 2012
  • TFS
  • Sql Server 2008

1 个答案:

答案 0 :(得分:2)

这不会抛出异常,它只会更新0行。

您可以使用ExecuteNonQuery()检查受影响的行数,如果它们等于0,则可能会抛出异常(这会非常昂贵)但会达到您的预期。

您还可以将单元测试重写为Assert受影响的行大于0。