私は新しいプロジェクトの始まりに近づいており、(あえぎ!)初めて、私のプロジェクトに単体テストを含めようとしています。
単体テスト自体のいくつかを考案するのに苦労しています。簡単にテストできるメソッドがいくつかあります (2 つの値を渡して、期待される出力を確認します)。データベースに対してクエリを実行するなど、より複雑なことを行っているコードの他の部分があり、それらをテストする方法がわかりません。
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 オブジェクトで返します。
最初の質問はおそらく最も複雑です。このような状況で何をテストすればよいでしょうか?
それが解決したら、データベース コンポーネントをモック アウトするか、実際の DB に対してテストを試みるかという問題が生じます。