Я уже почти начинаю новый проект и (вздыхаю!) в первый раз, когда я пытаюсь включить модульные тесты в мой проект.
У меня возникли проблемы с разработкой отдельных тестов. У меня есть несколько методов, которые были достаточно легки для тестирования (передать два значения и проверить ожидаемый результат). У меня есть другие части кода, которые выполняют более сложные вещи, такие как выполнение запросов к базе данных, и я не уверен, как их протестировать.
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;
}
Этот метод по существу принимает все необходимые биты и фрагменты для извлечения некоторых данных из базы данных и возвращает данные в объекте DataTable.
Первый вопрос, вероятно, самый сложный: что я должен тестировать в такой ситуации?
После этого возникает вопрос о том, нужно ли издеваться над компонентами базы данных или пытаться протестировать фактическую БД.