Cómo escribir pruebas unitarias para llamadas a bases de datos

Estoy cerca del comienzo de un nuevo proyecto y (¡jadeo!) Por primera vez, estoy tratando de incluir pruebas de unidad en un proyecto mío.

Estoy teniendo problemas para idear algunas de las pruebas unitarias. Tengo algunos métodos que han sido fáciles de probar (pasar dos valores y verificar un resultado esperado). Tengo otras partes del código que están haciendo cosas más complejas como ejecutar consultas en la base de datos y no estoy seguro de cómo probarlas.

public DataTable ExecuteQuery(SqlConnection ActiveConnection, string Query, SqlParameterCollection Parameters)
{
    DataTable resultSet = new DataTable();
    SqlCommand queryCommand = new SqlCommand();
    try
    {
        queryCommand.Connection = ActiveConnection;
        queryCommand.CommandText = Query;

        if (Parameters != null)
        {
            foreach (SqlParameter param in Parameters)
            {
                 queryCommand.Parameters.Add(param);
            }
        }

        SqlDataAdapter queryDA = new SqlDataAdapter(queryCommand);
        queryDA.Fill(resultSet);
    }
    catch (Exception ex)
    {
        //TODO: Improve error handling
        Console.WriteLine(ex.Message);
    }

    return resultSet;
}

Este método esencialmente toma todos los bits y piezas necesarios para extraer algunos datos de la base de datos y devuelve los datos en un objeto DataTable.

La primera pregunta es probablemente la más compleja: ¿Qué debería probar en una situación como esta?

Una vez que se resuelve, surge la cuestión de si simular o no los componentes de la base de datos o intentar probarlos con la base de datos real.

Respuestas a la pregunta(9)

Su respuesta a la pregunta