Como gravar testes de unidade para chamadas de banco de dados

Estou perto do começo de um novo projeto e, pela primeira vez, estou tentando incluir testes de unidade em um projeto meu.

Estou tendo problemas para criar alguns dos testes de unidade. Eu tenho alguns métodos que foram fáceis o suficiente para testar (passar em dois valores e verificar uma saída esperada). Eu tenho outras partes do código que estão fazendo coisas mais complexas como executar consultas no banco de dados e não tenho certeza de como testá-las.

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;
}

Esse método essencialmente recebe todos os bits e partes necessários para extrair alguns dados do banco de dados e retorna os dados em um objeto DataTable.

A primeira pergunta é provavelmente a mais complexa: o que devo testar em uma situação como esta?

Uma vez resolvido, surge a questão de se deve ou não ridicularizar os componentes do banco de dados ou tentar testar o banco de dados real.

questionAnswers(9)

yourAnswerToTheQuestion