2

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

公共无效删除传输(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
  • 数据库服务器 2008
4

1 回答 1

2

这不会引发异常,它只会更新 0 行。

您可以检查使用影响了多少行ExecuteNonQuery(),如果它们等于 0,则可以抛出异常(这在计算上会很昂贵),但会达到您的预期。

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

于 2013-09-13T13:06:07.347 回答