我正在尝试更多地了解单元测试,使用开箱即用的功能(我相信它是MSTest.exe)和Microsoft Fakes(存根和垫片)。
我正在使用Visual Studio 2012 Ultimate和.Net 4.5 Framework。
给定以下代码调用存储过程(SQL Server),该存储过程返回单个输出值(为简单起见):
public string GetSomeDatabaseValue()
{
string someValue = String.Empty;
SqlParameter paramater = new SqlParameter();
paramater.ParameterName = "@SomeParameter";
paramater.Direction = ParameterDirection.Output;
paramater.SqlDbType = SqlDbType.NVarChar;
paramater.Size = 50;
try
{
using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = "SomeStoredProcedure";
command.Parameters.Add(paramater);
connection.Open();
command.ExecuteNonQuery();
if (command.Parameters["@SomeParameter"] != null)
{
someValue= Convert.ToString(command.Parameters["@SomeParameter"].Value);
}
}
}
}
catch(SqlException)
{
throw;
}
return someValue;
}
我已经关注this tutorial并设法理解并使其适应一周中的某一天。
我正在等待VS2012数据库单元测试功能在2012年底(或恢复)作为MS员工has commented使用,以便可以单独测试数据库。
答案 0 :(得分:0)
Microsoft Fakes不是测试此代码的合适工具。而是创建集成测试。在此测试中,使用SQL Server的本地实例,显式创建存储过程期望在数据库中查找的数据,调用存储过程并验证其结果。回滚事务或手动删除数据库中的数据,以确保它不会影响其他测试。